Automatic constructor generation with support for required arguments, all arguments, and no-argument constructors.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface NoArgsConstructor {
String staticName() default "";
AnyAnnotation[] onConstructor() default {};
AccessLevel access() default AccessLevel.PUBLIC;
boolean force() default false;
}@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface AllArgsConstructor {
String staticName() default "";
AnyAnnotation[] onConstructor() default {};
AccessLevel access() default AccessLevel.PUBLIC;
}@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface RequiredArgsConstructor {
String staticName() default "";
AnyAnnotation[] onConstructor() default {};
AccessLevel access() default AccessLevel.PUBLIC;
}Usage Examples:
import lombok.*;
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class Person {
private final String name; // Required field
private int age;
private String email;
}
// Generated constructors:
// public Person() {}
// public Person(String name, int age, String email) { ... }
// public Person(String name) { ... } // Required args only