两者有什么区别:
static void findMax(LinkedList<? extends Number> list){...}
和:
static <T extends Number> void findMax(LinkedList<T> list){...}
由于两者都有效,我想知道两者之间是否有任何大的区别,建议使用哪个。
最佳答案
主要区别在于,在第二个版本中您可以访问类型 T
而在第一个版本中您不能。
例如,您可能希望返回与 T 相关联的内容(例如,返回 T 而不是 void):
static <T extends Number> T findMax(LinkedList<T> list){...}
或者您可能需要创建一个新的 T 列表:
static <T extends Number> void findMax(LinkedList<T> list){
List<T> copyAsArrayList = new ArrayList<> (list);
//do something with the copy
}
如果您不需要访问 T
,这两个版本在功能上是等效的。
关于括号内与括号外的 Java 泛型方法参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17448884/