快捷搜索: 王者荣耀 脱发

集合未使用泛型所出现的问题

1.为什么需要泛型

List list = new ArrayList();

list.add("My is none T");

list.add(100);

for (int i = 0; i < list.size(); i++) {

String name = (String) list.get(i); //取出Integer时,运行时出现异常

System.out.println("name:" + name);

}

如果不加泛型,List默认是Object,所以加一个String和Integer值是合法的,但是你在下面用的时候,忽略之前的兼容,会出现ClassCastException。

2.泛型的好处

(1).类型的安全

泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

(2).消除强制类型转换。

泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

(3).潜在的性能收益。

泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的 JVM 的优化带来可能。由于泛型的实现方式,支持泛型(几乎)不需要 JVM 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。

参考:

经验分享 程序员 微信小程序 职场和发展