Advanced and experimental features including utility classes, field name constants, and enhanced builder patterns.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface SuperBuilder {
String builderMethodName() default "builder";
String buildMethodName() default "build";
boolean toBuilder() default false;
String setterPrefix() default "";
}@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface UtilityClass {
}@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface FieldNameConstants {
AccessLevel level() default AccessLevel.PUBLIC;
boolean asEnum() default false;
String innerTypeName() default "Fields";
boolean onlyExplicitlyIncluded() default false;
}@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.SOURCE)
public @interface Delegate {
Class<?>[] types() default {};
Class<?>[] excludes() default {};
}Usage Examples:
import lombok.experimental.*;
@UtilityClass
public class MathUtils {
public static int add(int a, int b) {
return a + b;
}
}
@FieldNameConstants
public class User {
private String name;
private int age;
// Generated: public static final String NAME = "name";
// Generated: public static final String AGE = "age";
}