`
凯旋人生
  • 浏览: 61757 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JDK5.0 新特性之Generics 泛型

    博客分类:
  • JAVA
 
阅读更多

编译时类型安全
运行时ClassCastException的可能
当没有指定泛型集成的类型或接口时,默认使用T extends Objcet,所以默认情况下任何类型都可以作为参数传入。理由是如果允许加入的话就得记住取回的实例是什么类型,并强制转型,这使泛型就是去了意义。
例如
GenericTest<? extends Object> ge4=new GenericTest<String>();
g4.getFoo();//取出
g4.setFoo(null);//移除
g4.setFoo("abc");//编译器报错,不能改变

public Class A<T>{};
类定义中指定T必须继承于SomeClass
public Class A<T extends SomeClass>{};

使用<?>或是<? extends SomeClass>声明中指定必须继承于SomeClasst,意味着只能通过该名称来取得所参考实例的信息 或者是移除某些信息但不能增加它的信息。因为只知道当中放置的是SomeClass的子类但不确定是什么类的实例,边吸气不会让你加入信息
A<? extends SomeClass> a;
声明中指定必须是SomeClass的父类
A<? super SomeClass> a;

Generics继承
public class<T1,T2,T3> child extends Parent<T1,T2>
{
}

Generics接口
public interface ParentInterface<T1,T2>
{
}

public class<T1,T2> child implements ParentInterface<T1,T2>
{
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics