Um problema do Switch Java: expressões de caso devem ser expressões constantes

Estou com um problema na minha instrução switch / case. O erro diz: "As expressões de caso devem ser expressões constantes". Entendo o erro e posso resolvê-lo usando If, mas alguém pode me dizer por que a expressão do caso deve ser constante em um switch / case. Um exemplo de código do meu erro:

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 pela sua explicação !!

questionAnswers(3)

yourAnswerToTheQuestion