
根據Effective Java的準則,傳回的字串,應該是簡潔扼要,資訊豐富,且容易被人理解的內容,所以Mix覆寫toString(),雖然格式並沒有強制性的要求,不過原則上是field的說明與值,以便於了解內部成員的資料。
/* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "[id=" + id + ", name=" + name + ", strength=" + strength + "]"; }
/** * To stringz. */ @Test public void toStringz() { Role role = new RoleImpl(); role.setId(1); role.setName("OpenYu"); role.setStrength(100); String result = role.toString(); System.out.println(result); assertTrue(result.indexOf("id") > 0); assertTrue(result.indexOf("name") > 0); assertTrue(result.indexOf("strength") > 0); }
覆寫toString()之後,Mix執行一次測試方法toStringz(),來查看其結果。
測試成功了,滿足了覆寫toString()。
console查看其結果。
[id=1, name=OpenYu, strength=100]
利用Apache Commons ToStringBuilder來覆寫。
/* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String toString() { return new ToStringBuilder(this) .append("id", id) .append("name", name) .append("strength", strength) .toString(); }
- Effective Java Item 10:總是覆寫toString()。
奇妙!!! 第一次知道
回覆刪除但是在Android下 用Eclipse看 會發現不是每個toString()都在Object底下
這是Eclipse的特性 或Android重新設計過的關係???
toStirng() 在Android中並非specific,它是Java object class中的method,所以Android下,不會是每個toString(),都在object底下。
回覆刪除