Lombok @ToString

Цикл статей «Project Lombok».

Следующая статья — «Lombok @EqualsAndHashCode — облегчаем сравнение объектов».
Предыдущая статья — «Lombok @Getter и @Setter — больше не нужно писать геттеры и сеттеры».

К любому объявлению класса можно добавить аннотацию @ToString, чтобы lombok генерировал реализацию метода toString(). По умолчанию он возвращает имя класса и значения всех полей, разделённые запятыми.

Устанавливая параметр includeFieldNames в true, вы можете сделать вывод полей более понятным (но увеличить длину).

По умолчанию все нестатические поля выводятся. Если вы хотите пропустить некоторые поля, то вы можете перечислить их в параметре exclude. Или вы можете указать только поля, которые нужно выводить в параметре of.

Устанавливая callSuper в true, вы можете включить в результат результат вызова родительского класса. Имейте в виду, что реализация toString() в классе java.lang.Object бессмысленна, а значит вы, вероятно, не захотите делать этого, если только вы не расширяете другой класс.

С помощью Lombok

Чистая Java

Поддерживаемые ключи конфигурации

Обычно lombok генерирует фрагмент результата toString для каждого поля в виде «-имя поля = значение» Если эту настройку установить в false, то lombok будет пропускать имя поля и просто генерировать разделённый запятыми список значений полей. Параметр аннотации includeFieldNames, если указан, имеет приоритет перед этой настройкой.

 

Если установлено в true, то lombok при генерации методов toString() будет получать доступ к полям напрямую вместо использования методов получения значений. Параметр аннотации doNotUseGetters, если явно указан, имеет приоритет перед этой настройкой.

 

Lombok будет помечать все использования @ToString предупреждением или ошибкой, если указано.

Мелкий шрифт

Если уже есть метод с именем toString без аргументов, независимо от типа возвращаемого значения, никакой метод генерироваться не будет, а вместо этого появится предупреждение, объясняющее, что аннотация @ToString ничего не делает. Вы можете пометить любой метод @lombok.experimental.Tolerate, чтобы скрыть их от lombok.

Массивы выводятся с помощью Arrays.deepToString, что означает, что массивы, содержащие самих себя, генерируют исключение StackOverflowError. Однако это поведение не отличается от ArrayList.

Попытка исключить поля, которых нет или которые уже исключены (потому что они статические), приводит к появлению предупреждений на этих полях. Поэтому вам не нужно беспокоится об опечатках.

Одновременное присутствие exclude и of генерирует предупреждение, и в этом случае exclude будет игнорироваться.

Не гарантируется сохранение одинакового вывода сгенерированных методов toString() в различных версиях lombok. Вам не следует проектировать API таким образом, чтобы ваш код парсил toString()!

По умолчанию все переменные, начинающиеся с символа «$», исключаются автоматически. Вы можете только включить их, используя параметр of.

Если метод получения значения существует для включаемого поля, то вызывается он вместо прямого обращения к полю. Это поведение может быть изменено: @ToString(doNotUseGetters = true)

@ToString можно использовать при объявлении перечисления.

 

Цикл статей «Project Lombok».

Следующая статья — «Lombok @EqualsAndHashCode — облегчаем сравнение объектов».
Предыдущая статья — «Lombok @Getter и @Setter — больше не нужно писать геттеры и сеттеры».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *