【问题标题】:Can I declare method as toString with lombok annotation我可以用 lombok 注释将方法声明为 toString
【发布时间】:2020-09-14 08:36:25
【问题描述】:

是否可以将某个函数 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()。其输出与当前输出相同。龙目岛有可能吗?

【问题讨论】:

  • 只需在您的班级上添加@ToString projectlombok.org/features/ToString
  • 为什么要用注释替换它?
  • 您不只是使用另一个函数作为toString,而是处理结果(将int 转换为String)。我非常怀疑这是否可以通过注释来实现。但是当然你仍然可以覆盖toString,即使它已经用@Data或类似的Lombok注解生成。

标签: java spring-boot lombok


【解决方案1】:

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;
    }
}

【讨论】:

  • 很公平,我没有真正的理由强迫自己在这里使用 lombok 为我编写任何代码,因为它已经由我编写了 :D 谢谢!
猜你喜欢
  • 2016-02-04
  • 2019-03-23
  • 2011-04-12
  • 2018-11-05
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 2019-06-20
  • 2010-11-14
相关资源
最近更新 更多