Не обязательно разница, в то время как вы не изменяете перечисление. Однако, давайте рассмотрим пример:
enum MyEnum {
FIRST
{
@Override
void foo() {
//Do something
}
},
SECOND
{
@Override
void foo() {
//Do something else
}
};
abstract void foo();
}
Теперь, если мы должны были добавить новый элемент THIRD
для данного перечисления, то компилятор будет гарантировать, что мы на самом деле реализовать этот метод.
Давайте посмотрим на распределительном случае вместо:
enum MyEnum {
FIRST,
SECOND;
void foo() {
switch (this) {
case FIRST:
//Do something
break;
case SECOND:
//Do something else
break;
default:
break;
}
}
}
Если мы должны были добавить новый элемент THIRD
, то мы смогли бы забыть, добавив еще один случай на заявление переключателя, то есть мы должны быть более осторожно.
Еще одно отличие состоит в том, что switch
может использоваться для внешних функций с этими объектами перечисления, в то время как мы не можем добавлять дополнительные методы к самому перечислению.
Можете ли вы опубликовать код, который иллюстрирует немного больше того, что вы несете .... –
Пожалуйста, прочитайте [помощь] на [какие вопросы не задавать] (https://stackoverflow.com/help/dont -просить). Здесь вы в основном просите мнения всех о про и con без реальной проблемы, которую нужно решить. –