Zaczęliśmy coraz skompilować błędy w kodzie, które używane rodzajowych i że z powodzeniem skompilowany pod Java 6. Oto proste klasy do reprodukcji:błąd ogólny czas kompilacji Java migracji z Java 6 do 7 lub 8
class Test {
static class Foo<T> {
T t;
Foo(T t) { this.t = t; }
T get() { return t; }
}
static class Bar extends Foo<Long> {
Bar(Long t) { super(t); }
}
static class Foobar<N extends Number> extends Bar {
Foobar() { super(5L); }
}
public static void main(String[] args) {
Bar bar = new Bar(0L);
Long b = bar.get(); // This works
Foobar foobar = new Foobar();
Long fb = foobar.get(); // This generates a compile time error
}
}
Wynikowy błąd:
Test.java:26: error: incompatible types: Object cannot be converted to Long
Long fb = foobar.get(); // This generates a compile time error
Czy ktoś ma jakieś pomysły?
Niestety, nie wspominając, że błędy kompilacji zdarzyć w Java 7 i 8, ale nie w 6 ... –
dziwne, a ja dostać ten błąd kompilacji używając jdk1.7.0_13 z wiersza polecenia, to kod kompiluje grzywny w środowisku Zaćmienie, używając tego samego kompilatora (sprawdź, czy "zainstalowany JRE" wskazuje tę samą ścieżkę, i czy poziom zgodności wynosi 1.7, i używając tego jdk). – azurefrog
Mam dokładnie to samo - Eclipse skompilował to z zestawem 1.8 bez błędu. Bardzo dziwne ... –