Генерация конструкторов и доступ к полям.

ITCuties-Java-ConstructorProject генерирует не только геттеры и сеттеры, но и конструкторы и свойства полей класса.

Модификаторы полей.

В первую очередь избавимся от вечноповторяющихся private  и final. Аннотация @FieldDefaults, применённая на класс, позволяет задать всем поля класса уровень доступа по умолчанию или сделать все поля final  по умолчанию. В случае, если требуется исключение, можно использовать аннотацию @NonFinal , чтобы убрать final с конкретного поля. Аннотация @PackagePrivate  аналогичным образом работает для уровня доступа — значение из @FieldDefaults игнорируется.

Конструкторы

Аннотация @NoArgsConstructor создаёт конструктор по умолчанию. В случае, если в классе есть final поля, такой конструктор сгенерирован не будет. Но, если очень сильно попросить, передав в @NoArgsConstructor параметр force = true, то конструктор будет сгенерирован, а final поля будут инициализированы пустыми значениями. В том числе пустые значения будут присвоены полям с аннотацией @NonNull.

@RequiredArgsConstructor генерирует конструктор, принимающий значения для каждого final  поля или поля с аннотацией @NonNull  Аргументы конструктора будут сгенерированы в том порядке, в котором поля перечислены в классе. Для @NonNull полей конструктор так же будет проверять, чтобы в него не передали значение null.
@AllArgsConstructor генерирует конструктор для всех полей класса. Проверка на null  для @NonNull  полей тоже производится.

Все три аннотации принимают аргумент staticName, который позволяет создать статическую обёртку вокруг конструктора, с заданным именем и использовать её:

Код примера доступен на github.