phi*_*kim 53 java tostring guava
我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();
}
Run Code Online (Sandbox Code Playgroud)
如果我使用commons-lang则更简单:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法来实施toString()番石榴,而不是公共场所?
Eti*_*veu 111
我对番石榴有一个小技巧com.google.common.base.MoreObjects.toStringHelper().我将IntelliJ IDEA配置为在自动生成toString()方法时使用它.我假设你可以在Eclipse中做同样的事情.以下是Intellij中的操作方法:
toString()将模板更改为:
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();
}
Run Code Online (Sandbox Code Playgroud)保存模板,关闭"设置"和"生成toString()"窗口
Guava's MoreObjects.toStringHelper()在生成toString()方法时选择模板向类中添加新字段时,只需重新生成该toString()方法(IDEA将要求您确认是否要替换现有toString()方法).
mar*_*iak 11
有一个插件http://sourceforge.net/projects/guavaeclipse/(非常小)可以使用Guava类生成toString方法(以及等于hashcode).这是一个很好的解决方案,因为生成的方法非常小,不会使类混乱.