Java泛型转换

Java泛型转换的事实

  • 虚拟机中没有泛型,只要普通的类和方法
  • 所有类型参数都用他们的限定类型替换。无限定类型的用Object替换
  • 桥方法被合成用来保持多态
  • 为保持类型安全性,必须要时插入强制类型转换

桥方法:将参数强制类型转换后调用另一个重名方法

public void setSecond(Object sec){
      setSecond((Data)sec);
}

泛型的约束和局限性

  1. 不能用基本类型实例化类型参数
  2. 运行时类型查询只适用于原始类型(Pair<T>的原始类型为Pair),无论何时使用instanceof或涉及泛型类型的强制类型转换都会看到一个编译器警告
  3. 不能创建参数化类型的数组
  4. 不能使用new T()、T.class、不能实例化类型变量(可以通过反射)
  5. 不能在静态上下文中使用类型变量
  6. 不能抛出、捕获泛型类实例
  7. 永远可以将参数化类型转换为一个原始类型,即Pair<T> 是Pair的一个子类型
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容