Почему нельзя объединить перечисление и запись?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему нельзя объединить перечисление и запись?

Сообщение Anonymous »

Недавно я просто создавал еще один тип перечисления. Я воспользовался тем, что в Java перечисление — это особый тип класса (а не именованная целочисленная константа, как в C#). Я сделал это с двумя полями, конструктором со всеми аргументами и методами получения для обоих полей.
Это пример:

Код: Выделить всё

enum NamedIdentity {

JOHN(1, "John the Slayer"),
JILL(2, "Jill the Archeress");

int id;
String nickname;

NamedIdentity(int id, String nickname) {
this.id = id;
this.nickname = nickname;
}

id id() {
return this.id;
}

String nickname() {
return this.nickname;
}
}
Тогда я подумал, что ключевое слово Record в Java 14 спасло бы меня от шаблонного кода, который эта функция пыталась спасти. Насколько я знаю, это не сочетается с перечислениями. Если бы запись перечисления существовала, вышеупомянутый код выглядел бы так:

Код: Выделить всё

enum record NamedIdentity(int id, String nickname) {
JOHN(1, "John the Slayer"),
JILL(2, "Jill the Archeress");
}
Мой вопрос: есть ли причина, по которой записи перечисления не существуют? Я мог бы предположить несколько причин, включая, помимо прочего:
  • Количество вариантов использования этой функции будет слишком маленьким, язык Java выиграет больше, если мы, как разработчики языка Java, разработали и реализовали другие функции.
  • Это сложно реализовать из-за внутренней реализации типа перечисления.
  • Мы, как разработчики языка Java, просто об этом не подумали или еще не получили такого запроса от сообщества, поэтому не придали ему приоритета.
  • Эта функция может иметь семантические проблемы или реализация этой функции может вызвать семантическую двусмысленность или иную путаницу.


Подробнее здесь: https://stackoverflow.com/questions/659 ... e-combined
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»