Java 泛型的好处及实现原理

泛型好处:

泛型简单易用

类型安全 泛型的主要目标是实现java的类型安全。 泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一个高的程度上验证这个类型

消除了强制类型转换 使得代码可读性好,减少了很多出错的机会

Java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

泛型的实现原理

泛型的实现是靠类型擦除技术 类型擦除是在编译期完成的 也就是在编译期 编译器会将泛型的类型参数都擦除成它的限定类型,如果没有则擦除为object类型之后在获取的时候再强制类型转换为对应的类型。 在运行期间并没有泛型的任何信息,因此也没有优化。

泛型不考虑继承

List 类型 是否 可以 赋值为 List类型 ? 
答案是不可以的 
虽然说在赋值之后 String类型可以当做 Object类型使用 但是还是会出现问题 
假设如下代码

List<String> strings = new ArrayList<>();
    strings.add("哈哈哈哈");
    List<Object> objs = new ArrayList<>();
    objs = strings;  //编译会出错,这里我们假设成功  
    Object aa = objs.get(0);  //此处可以把String转换为Object使用 
    objs.add("呵呵呵呵");
    objs.add(new Object());  //这时 objs中 既有 String 类型 也有 Object类型 
    objes.get(2);  //这个时候 我们不会知道取出的到底是 Object对象 还是 String类型的对象  因此编译器为了防止出现这种情况  就提示编译出错
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

更详细的可以参考下面这篇文章: 
java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题

猜你喜欢

转载自blog.csdn.net/nielinqi520/article/details/79613564