【发布时间】:2013-06-18 03:22:47
【问题描述】:
public abstract class A<T> {
public static void test(A i) { for (String s : i.get()) {} }
public abstract Iterable<String> get();
}
为什么我得到上面的代码:
incompatible types
required: String
found: Object
但是如果我将test 方法的参数更改为A<Object>,它会编译好吗?为什么变量的未定义泛型参数会丢弃其方法返回类型的显式泛型参数?
【问题讨论】:
-
public void test(A<T> i) { for (String s : i.get()) {} } -
@TheNewIdiot 这是一个静态方法。
-
好的,那就是
public static void test(A<?> i) { for (String s : i.get()) {} }