«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Lombok Unleashed: повышение эффективности Java с помощью геттеров, сеттеров, конструкторов, сборщиков и многого другого

Lombok Unleashed: повышение эффективности Java с помощью геттеров, сеттеров, конструкторов, сборщиков и многого другого

Опубликовано 30 июля 2024 г.
Просматривать:612

Lombok Unleashed: Elevating Java Efficiency with Getters, Setters, Constructors, Builders, and More

Введение в проект Ломбок

Project Lombok — это популярная библиотека Java, целью которой является сокращение количества шаблонного кода и повышение производительности программистов за счет экономии времени и энергии за счет предоставления аннотаций для автоматического создания общего кода Java во время компиляции

Что такое проект Ломбок?

Проект Lombok решает проблему многословия Java, предлагая аннотации, которые устраняют необходимость вручную писать повторяющиеся конструкции кода, такие как методы получения, установки, конструкторы, методы равенства, hashCode и toString. Аннотируя поля или классы аннотациями Lombok, программисты могут указать компилятору автоматически генерировать эти методы, уменьшая объем шаблонного кода и делая классы Java более компактными и читаемыми.

Почему мы используем Project Lombok?

Использование Project Lombok на Java предлагает несколько убедительных преимуществ, которые способствуют повышению производительности, качества кода и удобства сопровождения.
Вот несколько причин выбрать Project Lombok.
Это уменьшает «шаблон кода».
Это также улучшает возможность повторного использования и читабельность кода.
Это очень просто реализовать и не представляет никакой сложности.
Легко интегрируется с «IDE».

Как реализовать Lombok на Java в проекте Maven

Большинство наших проектов основаны на Maven. Итак, нам просто нужно добавить зависимости «Project Lombok» в наш файл «Pom.xml», присутствующий в нашем проекте.

Перейдите в репозиторий maven и скопируйте оттуда репозиторий Lombok Maven, добавьте последнюю зависимость lombok в свой «Pom.xml» и сохраните ее, затем обновите проект.

Функция геттеров и сеттеров в Project Lombok на Java

В Java наиболее распространенной практикой является добавление геттеров и сеттеров с использованием шаблона «Java Beans». Большинство IDE автоматически генерируют код для этих шаблонов.

Давайте посмотрим, как код понимает этот подход, создав методы получения и установки с помощью «Объектов данных» и «Фабрики данных» :

Объект данных без Ломбок

Хотя традиционный подход JavaBeans для создания методов получения и установки вручную выполняет свою работу, но он имеет несколько недостатков и ограничений, которые делают его менее желательным, особенно в современных средах разработки Java, его недостатки в основном описаны в Lombok.

Поэтому вместо этого мы предпочитаем использовать паттерн Ломбок. Вот как это можно реализовать на Java:

Особенности конструктора Project Lombok на Java

Конструкторы без Lombok. Нам приходится вручную определять каждый конструктор, что может быть утомительно и подвержено ошибкам, особенно для классов с большим количеством полей. Кроме того, нам необходимо обрабатывать различные конфигурации конструкторов, что может увеличить сложность кода.

Lombok упрощает этот процесс с помощью аннотаций @NoArgsConstructor, @AllArgsConstructor и @RequiredArgsConstructor.

Конструкторы без Ломбока

Использование аннотаций Lombok уменьшает количество шаблонного кода, который необходимо писать вручную. В Lombok вы просто аннотируете класс и поля, а конструкторы генерируются автоматически на основе указанных критериев. Это приводит к более чистому и лаконичному коду.

Различные особенности и свойства Ломбока

  1. Генерация ToString
  • В Java toString() — это метод, определенный в классе java.lang.Object, который служит для возврата строкового представления объекта. Метод toString() наследуется всеми классами Java, а его реализация по умолчанию в классе Object возвращает строку, содержащую имя класса, за которым следует символ «at» (@) и шестнадцатеричное представление хэш-кода объекта.
  • Однако реализация toString() по умолчанию, предоставляемая Object, не всегда может быть значимой или полезной для определенных классов. Поэтому разработчики обычно переопределяют метод toString() в своих собственных классах, чтобы предоставить собственное строковое представление, которое лучше описывает состояние или свойства объекта.
  • В нашем примере класс Profile может переопределить toString(), чтобы вернуть строку, содержащую имя, фамилию, обозначение и информацию о возрасте. Переопределение toString() позволяет легко печатать или регистрировать информацию об объекте в удобочитаемом формате, что может быть полезно для отладки, регистрации или отображения информации пользователям.
  • Без использования аннотаций ToString Lombok нам придется вручную реализовать метод toString() в классе Profile. Мы объединяем поля firstName, LastName, Обозначение и Возраст, чтобы создать желаемое строковое представление. Эта реализация вручную дает тот же результат, что и аннотация @ToString от Lombok.

Без использования функции аннотаций ToString

  • Аннотация @ToString генерирует для класса метод toString(), предоставляющий строковое представление его полей. Нет необходимости писать его самостоятельно и поддерживать по мере расширения нашей модели данных.
  • С этой аннотацией вызов toString() для экземпляра профиля вернет строку, содержащую значения его полей.
  • Аннотации @Exclude могут быть полезны для любых различных аннотаций, таких как геттеры, сеттеры, ToString, EqualAndHashCode и т. д. Давайте разберемся с этим на примере аннотации @ToString.
  • Аннотируя поле обозначения с помощью @ToString(exclude = {“designation”})
  • Lombok исключает его из включения в метод toString(), созданный @ToString. Это может быть полезно, если вы хотите избежать отображения определенных полей в строковом представлении объекта.

2. Генерация EqualAndHashCode

  • В Java методыquals() и hashCode() обычно используются для реализации равенства объектов и генерации хэш-кода соответственно.
  • Метод
  • equals(): метод равенства() используется для сравнения двух объектов на предмет равенства. По умолчанию методquals(), предоставляемый классом Object, сравнивает ссылки на объекты, то есть возвращает true только в том случае, если два сравниваемых объекта являются одним и тем же экземпляром в памяти. Однако часто бывает необходимо переопределить методquals() в пользовательских классах, чтобы определить значимое понятие равенства на основе атрибутов объекта.
  • Метод
  • hashCode(): метод hashCode() используется для генерации значения хэш-кода для объекта. Хэш-код — это целочисленное значение, которое представляет состояние объекта и обычно используется в структурах данных на основе хэша, таких как хеш-таблицы. Метод hashCode() важен, поскольку он позволяет эффективно хранить и извлекать объекты в коллекциях на основе хеша.
  • В нашем примере мы вручную реализовали и переопределили метод Equals() для сравнения полей двух объектов Profile на предмет равенства, а также метод hashCode() для генерации хэш-кода на основе полей.
  • Мы используем метод Objects.equals() из класса java.util.Objects для сравнения полей на равенство и метод Objects.hash() для генерации хэш-кода.

Без использования функции аннотаций EqualAndHashCode

  • Аннотация @EqualsAndHashCode генерирует методы Equals() и hashCode() на основе полей класса.
  • С помощью этой аннотации Lombok генерирует методыquals() и hashCode(), используя все поля класса.
  • Это устраняет необходимость ручной реализации этих методов, сокращает количество шаблонного кода и повышает удобство сопровождения кода.

3. Аннотации к данным
Без использования аннотаций @data нам приходится вручную реализовывать функции геттеров, сеттеров и конструкторов в нашем коде.

  • Без использования функции аннотаций к данным

  • Аннотация @data — это удобный ярлык, объединяющий @Getter, @setter, @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode и многие другие аннотации.

  • Используя @data, Lombok автоматически генерирует для нас эти методы на основе полей, объявленных в классе. Это значительно уменьшает объем шаблонного кода, который нам нужно писать и поддерживать, делая наш код более кратким и читабельным.

  1. Шаблон Строителя
  • Вернувшись к нашему примеру с профилем, создание нового экземпляра требует использования конструктора с потенциально большим числом четырех аргументов, и эта задача становится громоздкой, когда мы добавляем в класс дополнительные атрибуты.
  • К счастью, Lombok предоставляет надежное решение с функцией @builder, которая облегчает использование шаблона Builder для создания новых экземпляров. Давайте интегрируем эту функцию в наш класс Profile.

пакет org.example.dataobjects;

импортировать ломбок.*;

@Геттер
@setter
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
@ToString(exclude = {"обозначение"})
@EqualsAndHashCode
@builder
@данные
Профиль публичного класса {
частная строка firstName;
частная строка фамилия;
частное обозначение строки;
личный возраст;

public static void main(String[] args) {

// Создание экземпляра профиля с помощью конструктора
Профиль профиля = Profile.builder()
.firstName("Часть")
.lastName("Катротия")
.designation("Инженер по автоматизации контроля качества")
.age(23)
.строить();
}
}

Деломбок

  • Delombok — это инструмент, предоставленный Project Lombok, который обращает вспять эффекты аннотаций Lombok, по сути «деламбокифицируя» ваш код. Он позволяет конвертировать исходный код Java, содержащий аннотации Lombok, в простой код Java, расширяя аннотации и заменяя их соответствующим шаблонным кодом, который они будут генерировать.
  • Основная цель Delombok — облегчить совместимость и взаимодействие со средами или инструментами, которые не поддерживают аннотации Lombok напрямую. Например, если вам нужно поделиться своим кодом с разработчиками, в среде разработки которых не установлен Lombok, или если вы хотите проанализировать или реорганизовать код с аннотациями Lombok, используя инструменты, которые не понимают аннотации Lombok, вы можете использовать Delombok для преобразования код в форму, понятную и пригодную для использования в этих контекстах.
  • Delombok можно вызывать через командную строку или интегрировать в инструменты сборки, такие как Maven или Gradle. Когда вы запускаете Delombok для исходного кода, он обрабатывает файлы Java, расширяет аннотации Lombok и генерирует новые файлы Java без каких-либо аннотаций Lombok. Результирующий код функционально эквивалентен исходному коду, но не зависит от Lombok.
  • В целом, Delombok — это полезный инструмент, предоставляемый Project Lombok, который улучшает совместимость и удобство сопровождения кодовых баз с использованием аннотаций Lombok, позволяя разработчикам использовать преимущества Lombok, сохраняя при этом совместимость с широким спектром сред и инструментов разработки.
  • ]

Заключение

Хотя в этом посте освещаются функции, которые я считаю наиболее полезными, Lombok предлагает множество дополнительных функций и настроек.
Документация Lombok — бесценный ресурс, содержащий подробные объяснения и примеры для каждой аннотации. Если вас заинтриговал этот пост, я советую вам углубиться в документацию Lombok, чтобы раскрыть еще больше возможностей.
Более того, сайт проекта предлагает подробные руководства по интеграции Lombok в различные среды программирования. Независимо от того, используете ли вы Eclipse, NetBeans, IntelliJ или другие, будьте уверены, что Lombok легко интегрируется с вашим рабочим процессом. Как человек, который часто переключается между IDE, я могу подтвердить универсальность и надежность Lombok на всех платформах.
В целом Project Lombok предлагает полный набор функций, которые упрощают разработку Java, уменьшают многословность кода и продвигают лучшие практики.
Project Lombok предлагает полный набор функций, которые упрощают тестирование Java, уменьшают многословность кода и продвигают лучшие практики. Используя сборщики Lombok и конструкторы Lombok, тестировщики могут еще больше упростить свой код и улучшить удобство обслуживания.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/jignect_technologies/lombok-unleashed-elevating-java-efficiency-with-getters-setters-constructors-builders-and-more-mfm?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163 .comdelete
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3