Uaktualniamy projekt Java 6 do Javy 8. Ponowna kompilacja z językiem Java 8 powoduje błędy w podklasie java.awt.Frame. Uprościliśmy następujące elementy:Uaktualnienie Java 8 powoduje błąd kompilatora z odziedziczonym statycznym wyliczaniem
org/example/Foo.java
package org.example;
import org.example.Type;
import java.awt.Frame;
public class Foo extends Frame {
public Foo() {
System.out.println(Type.BAZ); // <=== error here, BAZ cannot be resolved
}
}
org/example/Type.java
package org.example;
public class Type {
public static final int BAZ = 1;
}
Co wydaje się dzieje jest statyczną enum java.awt.Window.Type wprowadzone w Java 7 jest podejmowanie pierwszeństwo, nawet jeśli istnieje import dla org.example.Type. Czy to jest poprawne?
Czy to oznacza, że będziemy musieli w pełni zakwalifikować wszystkie odniesienia do naszego typu przy użyciu org.example.Type?
Podejrzewam, że masz rację, a Java 8 dziedziczy import. IMHO powinieneś użyć w pełni kwalifikowanego pakietu, aby jasno określić, który typ masz na myśli. Możesz też użyć nazwy klasy, która nie jest w konflikcie z klasą wbudowaną. –
Zmieniło się "Typ" na "MyType", więc zakładam "Tak" na twoje pytania. – gustafbstrom