Mi sento come se dovessi essere in grado di trovare una risposta a questo, ma risulta essere più difficile da cercare del previsto ... quindi:
In C #, quando facciamo qualcosa di simile:
enum MyEnumClass { A, B };
static String Test(MyEnumClass m)
{
switch (m)
{
case MyEnumClass.A: return "the value was A";
case MyEnumClass.B: return "the value was B";
//default: return "The value was ????"; //we need to uncomment this
}
}
otteniamo un errore "non tutti i percorsi di codice restituiscono un valore" e dobbiamo aggiungere il caso predefinito, perché le enumerazioni sono in realtà solo numeri mascherati e potremmo chiamare il metodo con un valore che non abbiamo trattato in questo modo:
test((MyEnumClass)53)
Tuttavia, non penso che possiamo fare una cosa del genere (chiamiamo il metodo con nient'altro che i nostri due valori enum) in Java (o possiamo?). Tuttavia, se scriviamo codice simile in Java, otteniamo un errore simile. Se questo è il caso, c'è qualche ragione per cui il compilatore non riesce a capire che una tale istruzione switch è completa e quindi che il caso predefinito non è necessario?