Post Java -14 соглашение о присвоении имен получателям / установщикам - PullRequest
7 голосов
/ 30 января 2020

Java 14 введенных записей функция. Запись создает метод получения с тем же именем, что и поле, поэтому можно написать, например, print(person.name()). Но старое соглашение Java bean требует, чтобы этот метод назывался getName().

. Использование обоих стилей в одной и той же базе кода выглядит не очень хорошо. Перенос всего в записи невозможен, так как они слишком ограничены, чтобы заменить все варианты использования.

Существуют ли официальные или полуофициальные указания, как называть методы получения и установки после Java 14 в новом коде?

1 Ответ

8 голосов
/ 01 февраля 2020

Цитата из JEP 359 :

Целью объявления "войны с образцом" не является; в частности, это не является целью решения проблем изменчивых классов с использованием соглашений об именах JavaBean.

Насколько я понимаю, исходя из того же документа, записи являются transparent holders for shallowly immutable data.

Как говорится:

  1. Записи не подходят для поиска синтаксического сахара методов получения / установки, поскольку они не предназначены для замены JavaBeans.
  2. Я полностью согласен с вами, что JavaBeans слишком многословны. Может быть может быть реализована дополнительная функция (называемая бин вместо records ) - очень похожее поведение с функцией records , но это позволит изменчивость. В этом случае records и bean не будут взаимоисключающими.
  3. Как уже упоминалось, записи находятся в режиме preview . Давайте посмотрим, какой будет обратная связь от сообщества.

В общем, ИМХО, это шаг вперед ... Я написал этот пример набор, где вы можете увидеть сокращение кода до ~ 15% LO C от стандартного JavaBeans.

Также обратите внимание, что records behave like normal classes: they can be declared top level or nested, they can be generic, they can implement interfaces (из того же документа). На самом деле вы можете частично имитировать JavaBeans (однако, имеют смысл только геттеры), извлекая интерфейс, содержащий геттеры - однако это будет большая работа, а не действительно чистое решение ...

Итак, основываясь на логика c выше, чтобы ответить на ваш вопрос, нет - я не видел (полу) официального руководства для добытчиков и установщиков, и я не думаю, что сейчас есть мотивация для этого потому что, опять же, записи не являются заменой для JavaBeans ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...