【发布时间】:2018-07-20 03:24:40
【问题描述】:
在下面的泛型方法声明示例中,我认为这两个方法声明是相同的,因为它们接受相同类型的参数。
public static <T extends List<? extends Number>> void fun(T arg){}
public static void foo(List<? extends Number> arg){}
好的,那为什么不允许使用下面的语法来定义泛型类呢?
public class foo<List<? extends Numer>> {}
根据oracle的Java教程,是不是因为我只能使用class name<T1, T2, ..., Tn> { /* ... */ }这个语法来定义泛型类?而且Java还提供了额外的语法糖来定义泛型方法?
所以,如果我想定义一个像public class foo<T extends List<U extends Number>> 这样的泛型类来使用T 和U,我只能通过以下方式进行:
public class foo<U extends Number, T extends List<U>>?没有简洁的方法吗?
谢谢!
【问题讨论】:
标签: java generics wildcard type-parameter