Tengo una clase con una lista de enumeraciones. Las enumeraciones se pasan a un constructor y se actualizan a toString, pero no puedo tener una variable de instancia en la clase (parte del requisito). ¿Cómo puedo hacer que las enumeraciones salgan como String sin agregar una instancia?
public enum Other { GAME_BOY("Game Boy"), MACBOOK("Macbook Pro"), IPHONE("iPhone XS"), LAPTOP("Laptop"); private final String product; //can't have instance variable private Other(String passed) { this.product = passed; } @Override public String toString() { return product; } }Puede anular toString() para cada elemento:
public enum Other { GAME_BOY { @Override public String toString() { return "Game Boy"; } }, MACBOOK { ... }, ... }Vea este código ejecutado en vivo en IdeOne.com .
Alternativamente, puede poner una declaración de cambio en el método toString:
@Override public String toString() { switch (this) { case GAME_BOY: return "Game boy"; case MACBOOK: return "Macbook Pro"; ... } }¿Qué tal lo siguiente:-
public enum Other { GAME_BOY, MACBOOK, IPHONE, LAPTOP; @Override public String toString() { switch(this) { case GAME_BOY: return "Game Boy"; case MACBOOK: return "Macbook Pro"; case IPHONE: return "iPhone XS"; case LAPTOP: return "Laptop"; default: return null; } } public static void main(String[] args) { System.out.println("The value of the other is " + Other.GAME_BOY.toString()); } }