Automatic generation of toString, equals, and hashCode methods with extensive customization options.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface ToString {
boolean includeFieldNames() default true;
String[] exclude() default {};
String[] of() default {};
boolean callSuper() default false;
boolean doNotUseGetters() default false;
boolean onlyExplicitlyIncluded() default false;
}@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface EqualsAndHashCode {
String[] exclude() default {};
String[] of() default {};
boolean callSuper() default false;
boolean doNotUseGetters() default false;
CacheStrategy cacheStrategy() default CacheStrategy.NEVER;
AnyAnnotation[] onParam() default {};
boolean onlyExplicitlyIncluded() default false;
public enum CacheStrategy {
NEVER, LAZY
}
}Usage Examples:
@ToString(exclude = "password")
@EqualsAndHashCode(of = {"id", "email"})
public class User {
private Long id;
private String email;
private String password;
private String name;
}