Рубрики
Без рубрики

Сравнение функций ломбока с groovy

Ломбок Ломбок – это процессор аннотаций java, который автоматически генерирует шаблонный код… С тегом groovy, java.

Lombok – это процессор аннотаций java, который автоматически генерирует шаблонный код в ваших классах во время компиляции. Многие функции ломбока пересекаются с функциями языка groovy и AST-преобразований . Давайте рассмотрим некоторые из этих особенностей.

ломбок

val создает выводимую конечную локальную переменную типа.

тип будет выведен из выражения инициализатора. Локальная переменная также будет сделана окончательной.

var создает выводимую локальную переменную типа.

var работает точно так же, как val, за исключением того, что локальная переменная не помечена как окончательная.

заводной

У Groovy есть поддержка защита и различные . Поскольку groovy необязательно типизирован , эти ключевые слова обычно не обеспечивают вывод типа.

def и var действуют как заполнитель типа, т. е. заменяют имя типа, когда вы не хотите указывать явный тип. (см. определение переменной )

При использовании @Typechecked groovy предоставит вывод типа .

Когда код аннотируется с помощью @Typechecked, компилятор выполняет вывод типа. Он не просто полагается на статические типы, но также использует различные методы для определения типов переменных, возвращаемых типов, литералов… чтобы код оставался максимально чистым, даже если вы активируете средство проверки типов.

Чтобы получить поведение val в groovy, примените @typechecked и объявите переменную с по умолчанию или вар и ключевое слово final .

@TypeChecked
def final variable = '123'

ломбок

Ломбок будет генерировать нулевые проверки для любого метода генерации, который включает поле, помеченное @NonNull .

Ломбок всегда рассматривал различные аннотации, обычно называемые @NonNull в поле, как сигнал для генерации нулевого значения – проверьте, генерирует ли ломбок для вас весь метод или конструктор, например, с помощью @Data.

заводной

У Groovy есть @Nullcheck , который предоставляет аналогичные возможности.

Аннотация класса, метода или конструктора, которая указывает, что каждый параметр должен быть проверен, чтобы убедиться, что он не равен нулю. При размещении на уровне класса будут проверены все явные методы и конструкторы.

Ломбок имеет несколько преимуществ перед заводным. С помощью lombok, если поле помечено @NonNull , все сгенерированные методы будут выполнять проверки на нуль. В groovy это не так. включить сгенерированный должен быть установлен в значение true, чтобы groovy создавал нулевые проверки в сгенерированном коде. Когда этот параметр применяется в коде groovy, возможно, все еще не будет проверки на нуль. Эта проблема, похоже, исправлена в groovy 4.

Ломбок не поддерживает @NonNull на уровне класса. Для некоторых это может считаться недостатком. Каждый параметр для не сгенерированных методов должен быть явно объявлен как @NonNull . Ломбок гарантирует, что для всего сгенерированного кода будут созданы нулевые проверки.

ломбок

Вы можете использовать @Cleanup для обеспечения автоматической очистки данного ресурса до того, как путь выполнения кода выйдет из вашей текущей области.

заводной

Эта функция не поддерживается groovy, хотя groovy поддерживает дополнительные идиомы для автоматического управления ресурсами с использованием замыканий.

ломбок

Вы можете аннотировать любое поле с помощью @Getter и/или @Setter , чтобы lombok автоматически генерировал геттер/сеттер по умолчанию.

Ломбок будет генерировать геттеры и сеттеры для всех полей, помеченных этими аннотациями. Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводной

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. Получатель и установщик могут быть переопределены, записав их в классе. Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. Область действия может быть изменена путем переопределения метода. Свойства better и delombok, отмеченные ||final||, не будут генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. Область действия может быть изменена путем переопределения метода. определение класса better и Seany может быть помечено

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение класса etter и SEANY может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем в определенном порядке, разделенным запятыми. @toString||чтобы позволить lombok создать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок groovy, разделенный запятыми. @toString чтобы позволить lombok создать реализацию метода toString(). s, помеченный final

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. @@Golombok Это ||действие||, которое генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью @EqualsAndHashCode , чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ast , который генерирует метод

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью @EqualsAndHashCode , чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ast , который генерирует метод

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для ||свойств|| в классе groovy. gScope можно изменить, переопределив метод. определение классов etter и Seany может быть помечено свойством ||lombok По умолчанию, оно будет печатать имя вашего класса вместе с каждым полем, inGroovy имеет свой собственный порядок ||groovy, разделенный запятыми. Определение класса @Tolany может быть аннотировано с помощью || @EqualsAndHashCode||, чтобы позволить lombok генерировать реализации методов egroovy quals (Объект другой) и hashCode(). ombok Это ||ast||, который генерирует метод ||toString()|| для класса. @toString||аннотация. Строка ||, чтобы позволить lombok генерировать реализацию метода toString(). s, помеченный ||final||, не будет генерировать сеттер. tter можно переопределить, написав его в классе.

Если класс помечен этими примечаниями, во всех полях будут сгенерированы геттеры и сеттеры. Разработчик все еще может предоставить один из этих методов, и ломбок сохранит оригинальный метод. заводные геттеры и сеттеры автоматически генерируются для свойств

заводной

В groovy все исключения являются необязательными и не требуют объявления.

ломбок

@Synchronized является более безопасным вариантом модификатора синхронизированного метода.

заводной

@Synchronized уже существует в groovy и работает точно так же.

ломбок

Следующая лучшая альтернатива установщику неизменяемого свойства – создать клон объекта, но с новым значением для этого одного поля. Метод для создания этого клона – это именно то, что генерирует @With : метод с именем поля (newValue), который создает клон, за исключением нового значения для связанного поля.

заводной

Методы, аналогичные @With, могут быть созданы в groovy с помощью @Builder, но объект не является неизменяемым.

Groovy предоставляет аннотацию @Builder , которую можно использовать с Простой стратегией для создания цепных сеттеров.

 @Builder(builderStrategy=SimpleStrategy, prefix = 'with')

ломбок

Аннотация @Getter(lazy=true) создает кэшированную версию метода получения.

Вы можете позволить lombok сгенерировать геттер, который вычислит значение один раз, при первом вызове этого геттера, и с этого момента кэшировать его.

заводной

Можно использовать @Запомнил .

ломбок

Вы помещаете вариант @Log в свой класс (в зависимости от того, какой из них применяется к используемой вами системе ведения журнала); затем у вас есть статическое поле окончательного журнала, инициализированное, как обычно предписывается для используемой вами структуры ведения журнала, которое затем можно использовать для записи инструкций журнала.

заводной

заводной Заводной обеспечивает @Log заводной Заводной обеспечивает @Log , @Log4j и @Log4j2

Оригинал: “https://dev.to/moaxcp/comparing-lombok-features-with-groovy-2d1p”