为什么Java的泛型要做类型擦除

2017-05-04  本文已影响0人  RocWay

Java的泛型始自2004年10月发布的JDK5。
JDK5之前可以这么写:

List a = new ArrayList();
a.add(1);
a.add("Hello");
a.add(v);

总之可以往里添加各种类型的数据。
JDK5之后虽然有了泛型,可以在声明时制定类型参数,但是为了保证前向兼容,仍然允许上述代码。

只是从JDK5开始,在声明时可以加入类型信息,如下:

List<String> a = new ArrayList<>();
a.add(1);        // 编译出错
a.add("Hello);  // ok
a.add(v);       // 编译出错 

由此也可见Java的泛型是在编译时检查类型的。

上一篇下一篇

猜你喜欢

热点阅读