Questa è più una domanda concettuale. Diciamo che hai avuto la seguente enumerazione
public enum FooEnum {
ALPHA,
BETA,
GAMMA,
DELTA;
}
E diciamo che hai il seguente metodo:
public void doSomething(FooEnum value) {
if (value == FooEnum.ALPHA) {
// print something to the console
}
// other values ignored
}
Ora, questo esempio mi sembra un po 'strano, poiché stiamo completamente ignorando ogni altro valore di FooEnum
. Pensa che non si limiti solo alle enumerazioni, ma diciamo qualcosa di simile
public class Person {
public void doSomething(String s) {
if (s.equals("asdf") {
System.out.println("something");
}
// disregard all other values
}
}
Per me sembra che dovremmo almeno fare qualcosa riguardo ad altri valori che non ci interessano. Ho spesso fatto una convalida dell'input in anticipo per ottenere qualcosa come
public void doSomething(String s) {
if (s == null) {
throw new IllegalArgumentException();
}
// do stuff
}
ma cosa succede in questo esempio
public void doSomething(FooEnum value) {
if (value == null) {
throw new IllegalArgumentException();
}
if (value == FooEnum.ALPHA) {
// do something ALPHA specific
}
// ignore other logically grouped values in FooEnum
}
Quali sono (o sono alcuni) i modi suggeriti per evitare / refactare questo? Il modo principale a cui potrei pensare è di registrare che è stato intenzionalmente ignorato. Quali altri modelli potrebbero essere utilizzati.