当前位置: 首页 > 面试题库 >

使用谷歌番石榴的Objects.ToStringHelper

江衡
2023-03-14
问题内容

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 来实现?

番石榴文件


问题答案:

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

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

    public String toString() {
    
    return MoreObjects.toStringHelper(this)
    

    foreach ($member in $members)

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

    end

    .toString();
    

    }

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

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

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



 类似资料:
  • 问题内容: 说我有一个这样定义的: 根据我的阅读 (如果我错了,请纠正我): 如果将值写入0:00,则应在60秒后将其移至“准备退出”状态。从中实际删除值将在下一次 缓存修改 时发生(究竟是什么缓存修改?)。 那正确吗? 另外,我不确定和方法之间有什么区别,有人可以提供解释吗? 问题答案: *此链接的 *第一部分 :Guava如何使CacheBuilder中的条目到期? 我将重点讨论 expire

  • 问题内容: 刚刚发现了Guava库项目。 这些与GWT兼容吗? 问题答案: 从该页面的介绍性PDF中, 您可以在…上使用这些库。 在JDK 6上 在Android上, 我们认为。需要志愿者来帮助我们进行测试。 在Google App Engine上, 我们认为。需要志愿者来帮助我们进行测试。 在GWT上-参差不齐! 由于GWT的JDK库支持 可能参差不齐,也许是2/3,所以到目前为止,这些库中的东

  • 问题内容: 在过去的几周内,我一直在尝试使用番石榴的MapMaker查找理想的缓存实现。 根据我所学的知识,我的下一个尝试将弃用软值,以使用maximumSize和expireAfterAccess: 哪里 但是,我仍然要解决的一个问题是,一旦它们用完了,即使对象很容易到达,此实现也将逐出对象。这可能会导致环境中漂浮着具有相同UID的多个对象,而这是我所不希望的(我相信我试图实现的目标称为规范化)

  • 问题内容: 我想知道哪个更有效,为什么? 1) 要么 2) 问题答案: 我看不出您为什么要在此处使用builder的任何原因: 比在这种情况下制作一个更具可读性, 不会推断通用类型,并且在用作单行代码时必须自己指定类型, (来自docs) 在与另一个不可变集合调用时 做得很好( 尝试避免在安全的情况下实际复制数据 ), (从源) 调用以前创建的,同时避免为零元素和一元素集合创建任何列表(分别返回空

  • 我想为番石榴设个坑(http://pitest.org/)进行突变熟练度测试,但我在尝试运行时出现以下错误。这是我得到的错误: 基本上,要么PIT没有检测到测试,要么测试在PIT中运行不正常,所有测试都失败了。我读了这篇文章:JUnit测试通过,但PIT说套件不是绿色的,我认为“您的代码库是否包含可变静态状态?(例如在单例中)”是问题所在,但我不知道如何修复它。如果测试套件有一些隐藏的顺序依赖关系

  • 我的 Spark 版本是 2.2.0,它在本地工作,但在具有相同版本的 EMR 上,它给出了以下异常。