-1
如果我们可以使用泛型类型解决问题,Java为何提供了无界通配符。 例如在Java中使用无界通配符和泛型类型有什么区别?
class UnBoundedUsage {
//Method 1
public static void unboundedMethod(List<?> list) {
for(Object obj : list) {
System.out.println(obj);
}
}
//Method 2
public static <T> void methodWithType(List<T> list) {
for(T obj : list) {
System.out.println(obj);
}
}
}
谁能请帮助我了解,如果方法2可以解决我们的要求,那么为什么我们需要有方法1。 意味着哪个问题可以使用无界通配符解决,并且不能使用泛型方法类型(例如方法2)来解决?
您可以在方法2中将元素添加到'list';您不能在方法1中。 –
谢谢@AndyTurner,但是如果添加元素是唯一的问题,那么我们可以将其更改为以下代码段 public static void methodWithType(List super T> list){Object obj:list) {System.out.println(obj);} {System.out.println(obj); } } –
MishraJi
这不是唯一的问题;这只是一个问题的例子,类型变量提供了足够的信息,以便编译器可以保证安全。 –