Stiamo aggiornando un progetto Java 6 su Java 8. La ricompilazione con Java 8 genera errori in una sottoclasse java.awt.Frame, ho semplificato quanto segue:L'aggiornamento a Java 8 causa l'errore del compilatore con enum statico ereditato
org/es/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/es/Type.java
package org.example;
public class Type {
public static final int BAZ = 1;
}
Quello che sembra accadere è un enum statica java.awt.Window.Type introdotto in Java 7 è in corso la precedenza anche se esiste un'importazione per org.example.Type. È corretto?
Questo significa che dovremo qualificare completamente tutti i riferimenti al nostro tipo con org.example.Type?
Ho il sospetto che tu abbia ragione e Java 8 sta ereditando le importazioni. IMHO dovresti usare un pacchetto completo per essere chiari su quale "Tipo" intendi. Oppure puoi usare un nome di classe che non sia in conflitto con una classe integrata. –
Cambiare 'Tipo' in' MyType' ha funzionato, quindi presumo 'Sì' nelle tue domande. – gustafbstrom