【发布时间】:2011-09-01 00:24:55
【问题描述】:
我在 javac 和 Eclipse IDE 编译器之间有一个有趣的差异,我不知道谁是对的。因此,下面的代码使用 javac 编译,但是 Eclipse 告诉我静态初始化程序对“exportAll”的调用是错误的,因为:
类型 X 中的方法 exportAll(Iterable>) 不适用于参数 (Collection)
谁是对的? javac 还是 Eclipse?
import java.util.Map;
public class X {
interface Stat<T> {
}
public static void exportAll(Iterable<Stat<? extends Number>> vars) {
}
public static Map<Double, ? extends Stat> getPercentiles() {
return null;
}
static {
exportAll(getPercentiles().values());
}
}
【问题讨论】:
-
getPercentiles 也应该是静态的,不是吗?否则它不会在任何一个上编译;)
-
尽管有这个示例,但 eclipse java 编译器中存在错误,它完全拒绝 sun java 编译器接受的泛型构造。最近我遇到了相反的情况,eclipse 3.7 接受了 sun 的 6u21 拒绝的推断。