可以注释String字段,因此 Lombok 生成一个 equals 方法,该方法忽略值的字符大小写String。
也就是说,生成如下内容:
public class Foo {
private String bar;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Foo foo = (Foo) o;
return bar != null ? StringUtils.equalsIgnoreCase(bar, foo.bar) : foo.bar == null;
}
}
Run Code Online (Sandbox Code Playgroud)
这是可能的,但不要这样做。
Lombok 不是一个定制工具。它是一种省略样板代码的工具。
@EqualsAndHashCode生成为每个字段调用 getter 进行比较的代码。要解决该问题,请执行 getter:
public getBar() {
return bar != null ? bar.toLowerCase() : null;
}
Run Code Online (Sandbox Code Playgroud)
比较将以小写形式进行。之后这个吸气剂就会被破坏。