分享

Java泛型应该注意的细节

 醉三郎 2012-05-28

Java泛型应该注意的细节

1、不可以用一个本地类型(即基本类型,如int   float)来替换泛型.比如List<Integer>不能用List<int>型式

2、运行时类型检查,不同类型的泛型类是等价的(Pair<String>与Pair<Employee>是属于同一个类型 Pair),这一点要特别注意:即如果a instanceof Pair<String>==true的话,并不代表a.getFirst()的返回值是一个String类型

3、泛型类不可以继承Exception类,即泛型类不可以作为异常被抛出(但是可以可以在处理异常的throws子句中使用类型参数,这使得你可以编写随checked exception的类型不同而发生变化的泛型代码

4、不可以定义泛型数组

5、不可以用泛型构造对象,即T first = new T(); 是错误的

6、在static方法中不可以使用泛型,泛型变量也不可以用static关键字来修饰 (但是这是对于泛型类中的static方法来说的。如果static方法需要使用泛型能力,就必须使该方法成为泛型方法。要定义泛型方法,只需要将泛型参数列表置于返回值之前。)

7、不要在泛型类中定义equals(T x)这类方法,因为Object类中也有equals方法,当泛型类被擦除后,这两个方法会冲突

8、根据同一个泛型类衍生出来的多个类之间没有任何关系,不可以互相赋值,即Pair<Number> p1; Pair<Integer> p2;   p1=p2; 这种赋值是错误的。

9、若某个泛型类还有同名的非泛型类,不要混合使用,坚持使用泛型类
     Pair<Manager> managerBuddies = new Pair<Manager>(ceo, cfo);
     Pair rawBuddies = managerBuddies; 这里编译器不会报错,但存在着严重的运行时错误隐患

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多