Java 泛型 Java使用泛型的意义

Posted IXENOS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 泛型 Java使用泛型的意义相关的知识,希望对你有一定的参考价值。

Java 泛型 Java使用泛型的意义

@author ixenos

 

 

直接意义


在编译时保证类型安全

 

根本意义


a) 类型安全问题源自可复用性代码的设计,泛型保证了类型安全的复用模板

b) 使用复用性模板时不用手动强制类型转换

 

三种泛型实现方式的优缺点


  • C++:模板方式实现,在编译时完全展开并且支持偏特化,类型精度高,代码共享差;
  • Java 5:擦除方式实现,仅用于编译时类型检查,在运行时擦除,向后兼容性好,代码共享好,类型精度非常差;
  • C# 2.0:混合方式实现,在运行时展开特化,类型精度高,代码共享还行。

 

  • 模板方式就是对应每一种类型都生成特定的模板,一个泛型类将有多个模板
  • 擦除方式就是对应所有泛型类型信息在编译时擦除,一个泛型类只有一个模板

 

  Q:Java为什么采用类型擦除?

  A:为了向后兼容(指二进制层面的向后兼容性,而非源码上的)

 

 

 

 

具体请参考:Reifiable generics与Type erasure generics各有怎样的优点与缺点?

      Java不能实现真正泛型的原因?

      java 泛型擦除发生在哪个阶段,如何用反编译工具查看泛型擦除后的代码?

 

以上是关于Java 泛型 Java使用泛型的意义的主要内容,如果未能解决你的问题,请参考以下文章

Java中泛型的介绍与简单使用

初识Java集合及包装类和泛型的基本使用

Java泛型

JavaSE 语法基础--- 泛型(基础知识问答)

泛型(java菜鸟的课堂笔记)

java中啥是泛型,怎么用泛型?