泛型(Generic) 泛型的优点
泛型引入前编程的痛点
JDK 1.5
版本以前没有泛型,使用 Object 来实现不同类型的处理,有两个缺点
1、每次使用时都需要强制转换
;
2、在编译时
编译器并不知道
类型转换是否正常,运行时
才知道。
List list = new ArrayList();
list.add("abc");
list.add(23);
String name = (String)list.get(0);
String number = (String)list.get(1); //ClassCastException
根据《Java 编程思想》中的描述,泛型出现的动机在于:有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类
使用泛型的好处
1. 类型安全检查 |
---|
泛型的主要目标是提高Java程序的类型安全 , 编译时期 就可以检查出 Java 类型不正确 导致的 ClassCastException 异常, 符合越早出错代价越小原则List<String> list2 = new ArrayList<String>(); list2.add(1); //类型检查,不是允许的类型无法放入集合 |
2. 消除强制类型转换 |
使用时直接得到目标类型,消除许多强制类型转换 。 所得即所需,这使得代码更加可读,并且减少了出错机会 |
3. 潜在的性能收益 |
由于泛型的实现方式,支持泛型几乎不需要JVM或类文件更改 。所有工作都在编译器 中完成。使用泛型后编译器生成的代码跟不使用泛型时所写的代码几乎一致 |
4. 重用性 |
5. 可读性 |
还没有评论,来说两句吧...