A<T extends B> and A <? extends B>

Refer to

http://stackoverflow.com/questions/5211548/what-is-the-difference-between-at-extends-b-and-a-extends-b

First of all, those are completely different constructs used in different contexts.

A<T extends B> is a part of generic type declaration such as

public class A<T extends B> { ... }

It declares generic type A with type parameter T, and introduces a bound on T, so that T must be a subtype of B.



A<? extends B> is a parameterized type with wildcard, it can be used in variable and method declarations, etc, as a normal type:

A<? extends B> a = ...;

public void foo(A<? extends B> a) { ... }

Variable declaration such as A<? extends B> a means that type of a is A parameterized with some subtype of B.

时间: 2024-10-14 22:10:07

A<T extends B> and A <? extends B>的相关文章

Java泛型中extends和super的理解(转)

E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定的java类型(无限制通配符类型) S.U.V – 2nd.3rd.4th types Object – 是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T.E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换. ?

&lt;T extends Comparable&lt;? super T&gt;&gt;

在看Collections源代码中,看到如下代码: [java] view plain copy public static <T extends Comparable<? super T>> void sort(List<T> list) { Object[] a = list.toArray(); Arrays.sort(a); ListIterator<T> i = list.listIterator(); for (int j=0; j<a.l

&lt;? extends T&gt;和&lt;? super T&gt;

转自:Java泛型中extends和super的区别? 另,问题来源:Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同? <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. <? extends T>:是指 "上界通配符(Upper Bounds Wildcards)"

JAVA 泛型通配符 ? EXTENDS SUPER 的用法

1. <? extends Hero> ArrayList heroList<? extends Hero> 表示这是一个Hero泛型或者其子类泛型heroList 的泛型可能是HeroheroList 的泛型可能是APHeroheroList 的泛型可能是ADHero所以 可以确凿的是,从heroList取出来的对象,一定是可以转型成Hero的 但是,不能往里面放东西,因为放APHero就不满足<ADHero>放ADHero又不满足<APHero> 2.

main;extends;super;instanceof;final

1 static关键字 4:内存分析 1:栈,堆.共享区 2:Demo.class加载近共享区 1:Demo类的main方法进栈 2:Person p1=new Person(); 1:Person.class 加载进方法区 2:堆内存开辟空间,实例变量进行默认初始化,显示初始化. 3:内存地址传给变量p1,栈和堆建立连接 3:person p2=new Person(); 1:堆内存开辟空间,实例变量进行默认初始化,显示初始化. 2:内存地址传给变量p2,栈和堆建立连接 4:如果建立多个Per

泛型限定&lt;? extends Object&gt;

关于泛型限定: <? extends E >向上限定.意思就是说只能传递E类型以及E类型的子类; 代码: package itheima; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 泛型限定 * @author Administrator * */ public class GenericityLimit { public static void main(String

JavaSE8基础 extends 子类继承父类 简单示例

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) 代码: /* * 多个类中存在相同的属性和行为时, * 这些重复的属性和行为,就可以归纳到一个单独的类中. * 这个单独的类是 父类.基类.超类. */ //基类 class Person { public void sayHello() { System.out.println("hello world"); } pu

Android开发之深入理解泛型extends和super的区别

摘要: 什么是泛型?什么是擦除边界?什么是上界限定或下界限定(子类型限定或超类型限定)?什么是类型安全?泛型extends关和super关键字结合通配符?使用的区别,两种泛型在实际Android开发中有什么用处? 一.什么是泛型? 泛型,大概的意思是指没有指定具体的类型的类或方法,以泛型的形式传入一个类中或方法中,在Java编程(Android编程)里面使用一对尖括号和一个大写字母表示,例如: //泛型类 public interface List<E>{} //泛型方法,类型参数位于返回类型

Java基础学习-extends继承(成员变量,局部变量,成员方法)

package extend; /*面向对象-继承: * 多个类的共同成员变量和成员方法.抽取到另一个类中(父类),我们多个类就可以访问到父类的成员了 * */ class Game{ String name; double vesion;//版本号 String agent;//代理商 public void start() { System.out.println("游戏启动"); } public void stop() { System.out.println("游戏