使用ignorecase生成Lombok equals方法

Bac*_*con 5 java lombok

可以注释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)

Ser*_*kin 2

这是可能的,但不要这样做。

Lombok 不是一个定制工具。它是一种省略样板代码的工具。

@EqualsAndHashCode生成为每个字段调用 getter 进行比较的代码。要解决该问题,请执行 getter:

public getBar() {
    return bar != null ? bar.toLowerCase() : null;
}
Run Code Online (Sandbox Code Playgroud)

比较将以小写形式进行。之后这个吸气剂就会被破坏

  • 我正在使用 apache commons-lang `EqualsBuilder` 和 `HashCodeBuilder` 来实现此行为。ps “getter will be bad”意味着该 getter 不再是一个 getter,因为它转换了 `bar` 字段而不是简单地返回它。 (3认同)