Wir aktualisieren ein Java 6-Projekt auf Java 8. Das erneute Kompilieren mit Java 8 gibt Fehler in einer java.awt.Frame-Unterklasse, die ich auf Folgendes vereinfacht habe:Java 8-Upgrade verursacht Compiler-Fehler mit geerbter Static Enum
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;
}
Was ist java.awt.Window.Type eine statische enum der Fall zu sein scheint 7 in Java eingeführt nimmt Priorität, obwohl es einen Import für org.example.Type gibt. Ist das richtig?
Bedeutet dies, dass wir alle Referenzen auf unseren Typ mit org.example.Type vollständig qualifizieren müssen?
Ich vermute, dass Sie Recht haben und Java 8 übernimmt Vererbung über Importe. IMHO sollten Sie ein voll qualifiziertes Paket verwenden, um klar zu sein, welche "Typ" Sie meinen. Oder Sie könnten einen Klassennamen verwenden, der nicht in Konflikt mit einer eingebauten Klasse steht. –
Das Ändern von "Typ" in "MyType" hat funktioniert, daher nehme ich bei Ihren Fragen "Ja" an. – gustafbstrom