Java中的通配符?与泛型变量T

版权声明:本文为博主原创,转载请注明出处。 https://blog.csdn.net/u011848397/article/details/88949550

泛型变量 T
只能在类、接口、方法中声明后才能使用,例如:

public class Box<T>{
	public T get(){...}
}

无界通配符 ?
只能用于填充泛型变量T,表示通配任何类型。注意,是用来填充泛型变量T的,属于填充方式的一种。例如:

Box<?> box;
box = new Box<String>();
---------------------------
Box<String> boxString;

Java编程思想第四版 P393-397

? extends 能取,不能存 即上转型是安全的
下转型是不安全的
super 能存,不能取

extends

void method(List<? extends T> holder, T arg){
	holder.add(arg) //error
	T t = holder.get();
}

super

void method(List<? super T> holder, T arg){
	holder.add(arg)
	T t = holder.get(); //error
}

猜你喜欢

转载自blog.csdn.net/u011848397/article/details/88949550