Java 通用通配符不适用
我有一个函数Java 通用通配符不适用,java,generics,Java,Generics,我有一个函数 public static void bar (final List<List<?>> list) { } 但是,这适用于类似的功能 public static void foo(List<?> l) { } public static void main(String[] args) { // no error foo(new ArrayList<String>()); } publicstaticvoidfo
public static void bar (final List<List<?>> list)
{
}
但是,这适用于类似的功能
public static void foo(List<?> l)
{
}
public static void main(String[] args)
{
// no error
foo(new ArrayList<String>());
}
publicstaticvoidfoo(列表l)
{
}
公共静态void main(字符串[]args)
{
//无误
foo(newarraylist());
}
请您解释一下,为什么编译器在第一种情况下抱怨,而在第二种情况下却没有抱怨?您应该将您的方法声明为:
private void bar(final List<? extends List<?>> lists) {...}
void bar(final List<? extends List<?>> lists)
将需要一个定义完全是
list的参数。问题不是他应该如何做,而是为什么它不起作用!更新了解释。。。取消否决票?
private void bar(final List<? extends List<?>> lists) {...}
void bar (final List<List<?>> list)
void bar(final List<? extends List<?>> lists)