mP.*_*mP. 17 java class-design
让我们面对它编写好的toString消息是一个无聊的杂乱的工作需要完成,因为它可以真正有助于调试或记录中的检查.
你喜欢或希望在这样的帮手中有什么功能......
转储属性应该带标签.
name = mP country =澳大利亚......
应该可以跳过某些默认值.
标签和值之间的分隔符应该是可更新的,并且在添加标签和值时应自动插入标签和值之间.
它还应该自动插入您选择的分隔符.
如果你想在包含一个数组时让逗号在值之间留空间,那就这样吧.
它应该自动引用字符串值...因为知道字符串开始和结束的确切位置非常重要.
*name = mP state ="新南威尔士"
当添加列表,地图或集合时,应该遵守有关引用字符串的规则,使用集合分隔符等.请不要只转储Collection.toString().
我还有其他一些人正在改进,你可以列出自己的想法,观察等.
new ToStringBuilder()
.setLabelValueSeparator('=')
.label("name")
.value(Country.AUSTRALIA) // -> returns "Australia" without the quotes.
.label("day of death")
.value(null) //
.label("numbers")
.valueSeparator(",");
.value(Arrays.asList( 1, 2, 3 )
.build();
Run Code Online (Sandbox Code Playgroud)
当然会导致"name ="Australia"数字= 1,2,3;
rip*_*234 20
Apache ToStringBuilder有一个很好的开箱即用的实现:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
Run Code Online (Sandbox Code Playgroud)
我现在正在寻找如何让它的输出更漂亮一点.ReflectionStringBuilder似乎提供了一些更多的自定义.具体我喜欢这个:
@Override
public String toString() {
StandardToStringStyle style = new StandardToStringStyle();
style.setFieldSeparator(", ");
style.setUseClassName(false);
style.setUseIdentityHashCode(false);
return new ReflectionToStringBuilder(this, style).toString();
}
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
[email=foo@gmail.com, age=16, createdDate=<null>, favoriteColor=blue, id=2]
Run Code Online (Sandbox Code Playgroud)
我只是使用我的IDE为我生成toString.如果我更改代码,我删除方法并重新生成.
| 归档时间: |
|
| 查看次数: |
8424 次 |
| 最近记录: |