我可以使用 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;
}
}
是否可以将某个函数 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;
}
}