美文网首页
Java泛型略深入总结

Java泛型略深入总结

作者: qichanna | 来源:发表于2019-04-30 16:42 被阅读0次

首先说一个概念,Object是String的父类,但是List<Object>不是List<String>的父类,如下代码

List<Object> a1 = new ArrayList<>(); 
List<String> a2 = new ArrayList<>();
a1.add(a2.get(0));

类似以上这样的代码是不可以的,因为他们不是父类与子类的关系,那要怎样才能表示集合泛型的父类与子类的关系呢,看如下代码:

通配符上限extends

List<? extends T> list1;
List<T> list2
list2.add(list1.get(0));

以上代码是可以的,因为可以确定list1是T的子类(或T),所以可以添加到list2中,list1.get方法能被赋值给T或者Object,list.add方法不能使用,因为无法确定list1的具体类型,只能知道是T的子类。

同理通配符下限super也可以这样:

List<? super T> list1;
List<T> list2
list1.add(list2.get(0));

因为list1可以确定是list2的超类,所以list2可以被添加到list1中,list2.add方法能用,但是list1.get方法不能使用,因为list1是T的超类,除了object可以被赋值,其他没有类型可以确定。

相关文章

  • Java泛型略深入总结

    首先说一个概念,Object是String的父类,但是List 不是List 的父类,如下代码 类似以上这样的代码...

  • Java泛型

    参考:Java知识点总结(Java泛型) 自定义泛型类 自定义泛型接口 非泛型类中定义泛型方法 继承泛型类 通配符...

  • 泛型

    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一Java泛型深入理解加泛型面试数组的协变性与范型的不可变性

  • 【Java】泛型中 extends 和 super 的区别(转载

    希望对 Java 泛型了解不深入的同学能看到这篇文章:Java 泛型中 extends 和 super 的区别

  • Java 泛型

    java 泛型 很多朋友对java的泛型不是很理解,很多文章写的已不是很清楚,这篇博客对java泛型进行 一个总结...

  • Java 泛型擦除原理

    问:请比较深入的谈谈你对 Java 泛型擦除的理解和带来的问题认识? 答:Java 的泛型是伪泛型,因为在编译期间...

  • java泛型、泛型的基本介绍和使用

    现在开始深入学习java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用。泛型在java...

  • [转载] java泛型(一)、泛型的基本介绍和使用

    现在开始深入学习java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用。泛型在java...

  • java泛型

    本质:类型参数化 java总结——泛型

  • Java泛型教程

    Java泛型教程导航 Java 泛型概述 Java泛型环境设置 Java泛型通用类 Java泛型类型参数命名约定 ...

网友评论

      本文标题:Java泛型略深入总结

      本文链接:https://www.haomeiwen.com/subject/gaxftxtx.html