Di seguito è riportato il codice che definisce il tipo di enum.In java, a cosa viene compilato questo tipo di enum?
enum Company{
EBAY(30), PAYPAL(10), GOOGLE(15), YAHOO(20), ATT(25);
private int value;
private Company(int value){
super(this.name());
this.value = value;
}
public int getValue(){
return value;
}
}
che viene internamente compilato,
final class Company extends Enum<Company>{
public final static Company EBAY = new Company(30);
public final static Company PAYPAL = new Company(10);
public final static Company GOOGLE = new Company(15);
public final static Company YAHOO = new Company(20);
public final static Company ATT = new Company(25);
private int value;
private Company(int value){
super(this.name(),Enum.valueOf(Company.class, this.name()));
this.value = value;
}
public int getValue(){
return value;
}
}
è la mia comprensione corretta?
'classe Company' non può sottoclasse esplicitamente' classe java.Lang.Enum'? Non ti ho capito. Come metodi come 'ordinal()'/'values ()' sono visibili per oggetti di tipo 'class Company' senza sottoclassi? – overexchange
@overexchange Fa sottoclasse 'java.lang.Enum' puoi confermarlo guardando il bytecode, tuttavia non puoi sottoclasse' java.lang.Enum' ** te **; questo semplicemente non verrà compilato come ho spiegato. Questa estensione viene aggiunta dal compilatore stesso. –
Puoi creare una classe che estenda 'Enum', se usi un compilatore più vecchio ... – Holger