了解 的上限和下限?在 Java 泛型中
我真的很难理解通配符参数。我对此有几个问题。
- ?作为类型参数,只能在方法中使用。例如:我无法使用 as type 参数定义类。- printAll(MyList<? extends Serializable>)- ?
- 我了解 的上限。 意思是:“ - printAll将打印- MyList,如果它具有实现- 可序列化接口的对象。
 我对 . 意思是:“- printAll将打印- MyList,如果它有- MyClass或任何扩展- MyClass的类(- MyClass的后代)的对象。- ?- printAll(MyList<? extends Serializable>)- super- printAll(MyList<? super MyClass>)"
纠正我哪里错了。
简而言之,只有 T 或 E 或 K 或 V 或 N 可以用作定义泛型类的类型参数。?只能用于方法
更新 1:
public void printAll(MyList<? super MyClass>){
    // code code code
}
与Ivor Horton的书一致,意味着如果它有它实现的对象或任何接口或类,我可以打印。也就是说,是一个下限。它是继承层次结构中的最后一个类。这意味着我最初的假设是错误的。MyList<? super MyClass>MyListMyClassMyClass
所以,假设看起来像这样:MyClass
public class MyClass extends Thread implements ActionListener{
    // whatever
}
然后,如果
1,将打印。列表
 2 中有 的对象。有 对象 或 在printAll()MyClassThreadActionListenerList
更新 2:
因此,在阅读了该问题的许多答案之后,以下是我的理解:
- ? extends T表示扩展- T的任何类。因此,我们指的是T的子- 项。因此,- T是上限。继承层次结构中的最上层阶级
- ? super T表示任何- 类/接口是- T的超级。因此,我们指的是- T的所有父级。因此,- T是下限。继承层次结构中最低的类
 
					 
				 
				    		 
				    		 
				    		 
				    		