Мне пришлось обнаружить, что у меня есть 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?