问题描述
是否可以将某个函数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;
}
}