Tengo un problema en mi instrucción de conmutador/caso. El error dice: "Las expresiones de caso deben ser expresiones constantes". Entiendo el error y puedo resolverlo usando If pero alguien me puede decir por qué la expresión de caso debe ser constante en un interruptor/caso. Un ejemplo de código de mi error:Problema de un conmutador Java: las expresiones de caso deben ser expresiones constantes
public boolean onOptionsItemSelected(MenuItem item) {
int idDirectory = ((MenuItem) findViewById(R.id.createDirectory)).getItemId();
int idSuppression = ((MenuItem) findViewById(R.id.recycleTrash)).getItemId();
int idSeeTrash = ((MenuItem) findViewById(R.id.seeTrash)).getItemId();
switch (item.getItemId()) {
case idDirectory:
createDirectory(currentDirectory);
break;
case idSuppression:
recycleTrash();
break;
case idSeeTrash:
seeTrash();
break;
}
return super.onOptionsItemSelected(item);
}
Thx por su explicación !!
¿Por qué utiliza 'findViewById() GetItemID()'.? Si ya tiene la identificación, ¡no necesita obtener el artículo para obtener la identificación! –
las declaraciones del interruptor son un mal olor ... Te recomiendo que estudies el uso del polimorfismo o el patrón del adaptador para lograr un mejor código. Además, puedes evitar problemas como estos por completo. – Bnjmn
@Bnjmn Estoy de acuerdo, especialmente cuando la condición se repite con bastante frecuencia. Si lo usa pocas veces, puede estar bien. Además, lo uso a veces con polimorfismo para crear la instancia concreta inicial. – OscarRyz