`
zybing
  • 浏览: 458903 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于泛型中<? extends A> 和 <? super A>的差别

 
阅读更多

天下文章一大抄, 继续抄

 

来源:  百度上搜索"泛型 super extends" , 出来一大堆 "泛型中super与extends的形象解释", 也不知道哪个是原创,也就不炒了,反正大家一搜索, 到处都是;

 

理解:

 

定义:

List<? extends A>  alist  = new ArrayList<TypeA>();

  这个说明TypeA是 A的子类, 从alist中获取的元素,转换成A是没有问题的;

  但是TypeA到底是A的哪一层子类, 这个就不知道了, 如果添加一个元素进去, 譬如

  alist.add(element):

     这个element和TypeA 的层次关系是否对就不知道了, 所以无法添加;

 

 

List<? super A> alist = new ArrayList<TypeA>();

    如果用了super来修饰,  说明TypeA是A的父类, 所以只要是A的子类添加进来,那都没问题,都可以;

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Java中List<? extends T>与List<? super T>的区别(值得珍藏)

    extends T&gt;和List&lt;? super T&gt;是泛型的不同使用形式,它们在类型约束和操作上有所不同。 1. List&lt;? extends T&gt; - `? extends T` 是类型上界的表示,意味着列表中的元素可以是T类型或者是T的任何子类型。这种类型的...

    泛型中? super T和? extends T的区别

    经常发现有List&lt;? super T&gt;、Set&lt;? extends T&gt;的声明,是什么意思呢?&lt;? super T&gt;表示包括T在内的任何T的父类,&lt;? extends T&gt;表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。

    泛型中extends和super的区别Java系列2021.pdf

    泛型中extends和super的区别Java系列2021.pdf 在Java中,extends和super是两个重要的泛型通配符,它们用于限制类型参数的范围。了解它们的区别非常重要,否则可能会导致编程错误。 extends关键字 在泛型中,...

    简单粗暴一文彻底搞懂Java泛型中的PECS原则(在坑里躺了多年终于爬出来了).md

    Java泛型中的PECS原则是程序员在处理带有泛型的集合时需要遵循的一条编程指导原则,它是英文单词Producer-Extends, Consumer-Super的缩写。PECS原则来自于《Effective Java》一书中提到的一条原则,即“Get and put ...

    collections方法集合

    List&lt;String&gt; flavors = new ArrayList&lt;&gt;(); Collections.addAll(flavors, "Peaches'nPlutonium", "RockyRacoon"); ``` 此例中,`flavors`列表将被填充上指定的字符串元素。 #### 2. `asLifoQueue` 此方法将`...

    Java泛型中? super T和? extends T的区别

    extends T&gt;表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。  extends  List&lt;? extends Number&gt; foo3的通配符声明,意味着以下的赋值是合法的:  // Number "extends" Number (in...

    java中泛型上下界问题基本问题的介绍

    extends Fruit&gt;`可以视为`Plate&lt;Fruit&gt;`及`Plate&lt;Apple&gt;`等所有`Fruit`的子类的容器的共同基类。这样就可以将`Plate&lt;Apple&gt;`实例赋值给`Plate&lt;? extends Fruit&gt;`类型的变量: ```java Plate&lt;? extends Fruit&gt; p = ...

    Java泛型三篇文章,让你彻底理解泛型(super ,extend等区别)

    在 Java 泛型中,extends 和 super 是两个重要的关键字,它们分别用于限定类型的上界和下界。 extends 用于限定类型的上界,表示参数化类型可能是 T 或 T 的子类。例如: List&lt;? extends Fruit&gt; flist = new ...

    Java泛型extends及super区别实例解析

    Java泛型extends及super区别实例解析 Java泛型中的通配符(Wildcards)和边界(Bounds)是两个重要的概念,分别由 &lt;? extends T&gt; 和 &lt;? super T&gt; представляют。这些概念的出现是为了解决泛型中的一些...

    使用通配符简化泛型使用1

    extends T&gt; 和 &lt;? super T&gt;)。 3. 无界通配符(&lt;?&gt;): 无界通配符表示没有任何特定类型的约束,意味着它可以代表任何类型。例如,`List&lt;?&gt;`表示一个可以存储任何类型元素的列表,但不允许添加元素,只能读取。 ...

    关于java基础的泛型的练习

    - 泛型类的实例化必须提供实际类型参数,如`MyList&lt;String&gt; list = new MyList&lt;&gt;();` - 对于无参构造的泛型类,可以使用匿名内部类的方式省略尖括号,如`new MyList&lt;String&gt;() {}`。 9. 泛型和静态方法: - 泛型...

    Java泛型总结(2)进阶篇

    `extends` 和 `super` 关键字可以限制通配符的范围,如 `&lt;? extends T&gt;` 只能接受T或T的子类,而 `&lt;? super T&gt;` 只能接受T或T的父类。 2. 边界 边界用于限制类型参数的类型。例如,我们可以定义一个方法,其参数...

    java泛型常用通配符实例解析

    限定通配符是指在泛型中使用extends关键字来限定类型的通配符,语法格式为`&lt;? extends E&gt;`,其中E是某个类型的名称。例如,在上述代码中,我们可以使用`Gys&lt;? extends T&gt;`来限定addAll方法的参数类型,表示该方法...

    Java中泛型通配符的使用方法示例

    Java中泛型通配符的使用方法示例 Java 中泛型通配符的使用方法示例主要介绍了 Java 中...Java 中泛型通配符的使用方法示例可以帮助开发者更好地控制泛型对象的类型和方法参数的类型,从而提高代码的灵活性和可读性。

    java中通配符使用以及intellij-idea实例

    通配符类型可以用在泛型类、接口、方法和变量中,用于表示泛型类型的未知部分。 在 Java 中,通配符类型的使用可以分为三种情况: 1. ?:表示任意类型的通配符,可以是任何类型的父类或接口。 例如:`ArrayList...

    1.泛型类 、通配符的使用、通配符的上限和下限 编写泛型类Stack<E>,该类中定义一个成员变量和如下方法:

    private LinkedList&lt;E&gt; elements = new LinkedList&lt;&gt;(); ``` **构造方法**: ```java public Stack() { // 初始化空栈 } ``` **入栈(push)方法**: ```java public void push(E element) { elements.addFirst...

    K_Generic--Bounds Wildcards知乎回答1

    在Java泛型中,通配符(Wildcards)和边界(Bounds)是为了解决类型兼容性和灵活性的问题。通配符允许我们定义泛型类型的限制,而边界则指定了这些限制的具体范围。 1. 为什么要使用通配符和边界? 在Java中,泛型...

    Java泛型_Java中的泛型结构_

    Java泛型是Java编程语言中一个强大的特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。泛型的主要目标是提高代码的类型安全性和重用性,减少类型转换的麻烦,并在编译时捕获可能的类型错误。...

Global site tag (gtag.js) - Google Analytics