Я понимаю ошибку, и я могу устранить ее с помощью If, но может кто-то сказать мне, почему выражение case должно быть постоянным в switch / case

я возникла проблема в моей инструкции switch / case. Ошибка говорит: «Выражения регистра должны быть константными выражениями». Я понимаю ошибку, и я могу устранить ее, используя If, но может кто-нибудь сказать мне, почему выражение case должно быть постоянным в switch / case. Пример кода моей ошибки:

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);
}

Спасибо за ваше объяснение!

Ответы на вопрос(3)

Ваш ответ на вопрос