# Java泛型 - 开发自己的泛型类

**URL:** <https://www.isharkfly.com/t/java/7002>\
**Category:** 程序语言\
**Created:** [May 23, 2013, 7:20pm UTC](https://www.isharkfly.com/t/java/7002 "2013-05-23T19:20:55Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [May 23, 2013, 7:20pm UTC](https://www.isharkfly.com/t/java/7002/1 "2013-05-23T19:20:55Z")

</div>

泛型类与一般的Java类基本相同，只是在类和接口定义上多出来了用\<\>声明的类型参数。一个类可以有多个类型参数，如 MyClass\<X, Y, Z\>。 每个类型参数在声明的时候可以指定上界。所声明的类型参数在Java类中可以像一般的类型一样作为方法的参数和返回值，或是作为域和局部变量的类型。但是由于类型擦除机制，类型参数并不能用来创建对象或是作为静态变量的类型。考虑下面的泛型类中的正确和错误的用法。`class ClassTest<X extends Number, Y, Z> {    
    private X x;    
    private static Y y; //编译错误，不能用在静态变量中    
    public X getFirst() {
        //正确用法        
        return x;    
    }    
    public void wrong() {        
        Z z = new Z(); //编译错误，不能创建对象    
    }
} `
