歡迎您光臨本站 註冊首頁

Apache Commons Lang之toString()實現

←手機掃碼閱讀     火星人 @ 2014-03-10 , reply:0

Apache Commons Lang為解決動態的toString()方法提供一套強有力的API.

一、實現策略

1、ReflectionToStringBuilder.toString(),通過反射方式實現.

2、new ToStringBuilder(),通過自定義顯示格式方式實現,顯示的式樣提供了好幾種.

二、實例

為了測試,創佳兩個類 Foo、Bar,分別通過兩種方式實現其toString方法

public class Foo {
private String name;
private int age;
private Bar bar;

public Foo(String name, int age) {
this.name = name;
this.age = age;
}

//省略getter/setter方法

}

public class Bar {
private String name;

public Bar(String name) {
this.name = name;
}

//省略getter/setter方法

}

1、通過反射方式實現toString();

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

顯示效果:

lang.Foo@c2a132[name=foo,age=88,bar=lang.Bar@e102dc[name=bar]]


Process finished with exit code 0

2、通過自定義格式方式實現

@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("name", name)
.append("age", age)
.append("bar", bar)
.toString();
}

上面這個是僅僅給了Foo類的toString()寫法.

ToStringBuilder類有好幾個靜態常量,用來控制顯示格式.

下面給出一個運行結果:

lang.Foo@1aaa14a[
name=foo
age=88
bar=lang.Bar@1e51060[name=bar]
]

Process finished with exit code 0

從中看來,toString()通過反射方式實現可以真正實現動態的.寫法簡單也省事,推薦!


[火星人 ] Apache Commons Lang之toString()實現已經有476次圍觀

http://coctec.com/docs/java/show-post-61743.html