一尘不染

使用谷歌番石榴的Objects.ToStringHelper

java

ToStringBuilder.reflectionToString(class)在commons-
lang中使用toString()了简单的DTO。现在,我尝试使用Google Guava代替Apache
Commons库。我Objects.ToStringHelper在番石榴找到了。但是如果班上有很多成员,这太冗长了。例如:

@Override
public String toString() {
    return MoreObjects.toStringHelper(this.getClass()).add("name", name)
            .add("emailAddress", emailAddress)
            .add("department", department).add("yearJoined", yearJoined)
            .toString();
}

如果我使用commons-lang,则简单得多:

@Override
public String toString() {
    return ToStringBuilder.reflectionToString(this);
}

有什么更好的方法可以toString()用Guava而不是commons-lang 来实现?

番石榴文件


阅读 394

收藏
2020-12-03

共1个答案

一尘不染

我有番石榴的小招com.google.common.base.MoreObjects.toStringHelper()。我将 IntelliJ
IDEA
配置为在自动生成toString()方法时使用它。我认为您可以在 Eclipse中 执行相同的操作。这是在
Intellij中执行的方法

  • 上课
  • 点击Alt+ Insert弹出“生成”菜单
  • 选择 toString()
  • 点击“设置”按钮
  • 转到“模板”标签
  • 创建一个名为“ Guava’s MoreObjects.toStringHelper()”的新模板(我通过复制“ ToStringBuilder”模板来做到这一点)
  • 将模板更改为:

    public String toString() {
    

    set ($autoImportPackages = “com.google.common.base.MoreObjects”)

    return MoreObjects.toStringHelper(this)
    

    foreach ($member in $members)

    .add("$member.name", $member.accessor)
    

    end

    .toString();
    

    }

  • 保存模板,关闭“设置”和“生成toString()”窗口

  • 您现在可以Guava's MoreObjects.toStringHelper()在生成toString()方法时选择模板

在类中添加新字段时,只需重新生成toString()方法(IDEA会要求您确认要替换现有toString()方法)。

2020-12-03