Java non ti obbliga ad avere un'istruzione "predefinita" ma è buona pratica a averne una tutto il tempo, anche se il codice potrebbe non essere mai raggiunto (in questo momento). Ecco alcuni motivi:
Avendo una clausola predefinita irraggiungibile mostri al lettore del tuo codice che hai considerato i valori e sai cosa stai facendo. Consenti anche modifiche future, ad esempio: viene aggiunto un nuovo valore enum; lo switch non deve ignorare in silenzio il nuovo valore; puoi lanciare un'eccezione lì o fare qualcos'altro.
Per rilevare un valore imprevisto (nel caso in cui non si stia accendendo un enum) che viene passato - potrebbe essere maggiore o minore di quanto previsto, ad esempio.
Per gestire le azioni 'default' - dove gli switch sono per un comportamento speciale. Ad esempio, una variabile può essere dichiarata al di fuori dello switch ma non inizializzata e ogni caso lo inizializza in qualcosa di diverso. In questo caso, l'impostazione predefinita potrebbe inizializzarla su un valore predefinito, in modo che il codice immediatamente successivo all'interruttore non commetta errori / genera un'eccezione.
Anche se decidi di non inserire nulla nell'impostazione predefinita (nessuna eccezione, registrazione, ecc.), anche un commento per dire che hai considerato il fatto che il default non accadrà mai può aiutarti a leggere il tuo codice; ma questo dipende dalle preferenze personali.