JavaEclipse与Javac:泛型的不同编译行为
Possible Duplicate:
Generics compiles and runs in Eclipse, but doesn't compile in javac
Compilers behave differently with a null parameter of a generic method
public static void main(String[] args) {
Class<Object> type1 = String.class;
Class<? extends Object> type2 = String.class;
Class<Object> type3 = get(String.class);
Class<Object> type4 = Foo.<Object, String> get(String.class);
}
public static <I, C extends I> Class<I> get(Class<C> type) {
return null;
}
第一行将生成以下编译错误:
Type mismatch: cannot convert from
Class<String>
toClass<Object>
这很正常。第二行就行了
在eclipse和javac中编译时,第三行的工作方式不同。Eclipse将很高兴地编译。Javac将给出以下错误:
[ERROR] Foo.java:[36,26] incompatible types
[ERROR] found : java.lang.Class<java.lang.String>
[ERROR] required: java.lang.Class<java.lang.Object>
第四行在两个编译器中都能正确编译
有人能解释发生了什么吗?谢谢:)
共 (0) 个答案