List<? extends Number>
表示在此处扩展 Number 的任何内容。所以假设你有像这样的课程
public class Example<T extends Number> {
public <T extends Number> void someMethod(List<T> list) ...
public <T extends Number> void someOtherMethod(List<T> list) ...
}
public class SomeClass extends Number {
}
public class SomeClass2 extends Number {
}
你创建了一个实例
Example<SomeClass> myExample = new Example<SomeClass>();
所以当你想在这里使用你的方法时,输入参数必须是同一个类SomeClass的实例,我们不能在这里使用SomeClass2。例如以下是无效的:
List<SomeClass2> someClass2 = new ArrayList<SomeClass2>();
example.someMethod(someClass2);
但是如果您将<? extends Number>
其用作 someMethod 的输入参数,那么它是可能的。您可以传递任何扩展 Number、someClass2 或 3、4 或任何其他类的东西。