Java泛型在Eclipse中编译,但不在javac中编译
2022-09-03 13:43:57
我不得不发现我的项目中有Java代码,它在Eclipse中编译和运行良好,但在javac中抛出编译错误。
一个独立的代码段:
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> setOfInts = new HashSet<Integer>();
Set<Object> setOfObjects = covariantSet(setOfInts);
}
public static <S, T extends S> Set<S> covariantSet(Set<T> set) {
return new HashSet<S>(set);
}
}
javac 中的编译返回:
Main.java:10: incompatible types
found : java.util.Set<java.lang.Integer>
required: java.util.Set<java.lang.Object>
Set<Object> setOfObjects = covariantSet(setOfInts);
^
此错误现在阻止在 Maven 中生成项目。由于Eclipse编译器被构建为更宽容,我现在必须假设片段的定义和用法,如上面的静态方法不是有效的Java?