我可以使用 lombok 注释将方法声明为 toString 吗

Can I declare method as toString with lombok annotation

是否可以将某个函数 foo() 声明为 toString ?具体来说:

int property 1;
int property 2;
int property 3;

boolean bar() {...}

int foo(){
  return bar() ? 0 : property2;
}

@Override
public String toString() {
  return String.valueOf(foo());
}

现在我想用 Lombok 注释替换 toString()。其输出与当前输出相同。这在某种程度上可以用 Lombok 实现吗?

lombok 的全部意义在于 'write code for you' - 如果您已经编写了它,为什么还要这个?

您可以做的是在您的 foo() 方法上添加一个 @ToString.Include 注释,这将使 lombok 列出调用此方法的结果以及所有字段。如果您的方法与您的其中一个方法同名(或在前面加上 get 并将第一个字母大写后同名),则该方法的输出将替换该字段。然后,您可以在 @ToString 上放置一个标记,表示您只想要显式包含的内容,此时 lombok 的 toString 将发出如下内容:"YourClass(foo=12)":

@ToString(onlyExplicitlyIncluded=true)
public class YourClass {
    int property1, property2, property3;

    @ToString.Include
    int foo() {
        return bar() ? 0 : property2;
    }
}