Dopo aver letto la documentazione di String java.lang.Enum.name()
non sono sicuro di aver capito quando utilizzare name() e quando utilizzare toString().Qual è la differenza tra `Enum.name()` e `Enum.toString()`?
Restituisce il nome di questa costante enum, esattamente come dichiarato nella dichiarazione enum. La maggior parte dei programmatori dovrebbe usare il metodo toString preferibilmente a questo, poiché il metodo toString potrebbe restituire un nome più user-friendly. Questo metodo è progettato principalmente per l'uso in situazioni specializzate in cui la correttezza dipende dall'ottenere il nome esatto, che non varierà da una versione all'altra.
In particolare, anche se la documentazione dice di preferire toString()
, proprio StandardLocation enumerazione di Java utilizza name
quando avrei pensato la documentazione suggerito altrimenti.
public String getName() { return name(); }
Inoltre Enum
attrezzi toString()
come,
public String toString() {
return name;
}
e non riesco a pensare a una situazione in cui un utente definito enumerazione sarebbe sovrascrivere toString()
così name()
e toString()
sono quasi sempre esattamente la stessa.
- Puoi spiegare perché ignorare la documentazione e usare sempre
name()
è una cattiva idea? - E la frase "non varierà da versione a versione". Se il nome non varierà, implicherebbe che
java.lang.Enum.toString()
sarebbe?
Per impostazione predefinita, un 'enfor_test()' è il suo '.name()'. Tuttavia, è possibile sovrascrivere '.toString()', non '.name()'. – fge