我可以将方法声明为带有lombok批注的toString

问题描述

是否可以将某个函数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的全部重点是“为您编写代码”-如果您已经编写了代码,为什么要这么做?

您可以做的是在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;
    }
}