2013-03-27 72 views
0

如果我需要一個自定義字符串表示形式的自定義類型集合,這是最好的選擇 - 子類集合並重寫toString(),或者只是創建一個實用程序方法鍵入集合並返回自定義字符串?還有其他選擇嗎?自定義字符串表示形式的自定義類型集合

+0

如果你可以告訴,這是什麼請,因爲否則,我認爲最好的選擇是使集合的子類和重寫toString()像你說... – jsedano 2013-03-27 03:34:12

+0

你說定製收集,這似乎暗示你已經子類化或實現了一個集合接口,所以'toString()'是最好的選擇。 – Jeshurun 2013-03-27 03:38:57

回答

2

我會傾向於創建一種實用方法。原因如下:

  • 從邏輯上講,您的自定義字符串表示形式是您在原始類之上分層的東西:它不是原始類的一部分。所以它不屬於原始類的定義。
  • 創建子類可能是矯枉過正而忽略了一種方法
  • 創建自定義子類使得由於其他原因無法使用覆蓋原始類的對象。如果你繼承這樣的東西,你繼承heirarchy可能很快變得難以管理。總是喜歡組合繼承!
  • 由於某些原因,您可能希望繼續使用原始toString():也許您需要兩個字符串表示形式,或者其他一些庫取決於原始的toString()行爲。在這種情況下,重寫就會造成問題.....

內「實用方法」選項,你有另一個選擇:

  • 創建一個簡單的靜態實用方法。簡單,快捷,這應該是你的第一選擇。
  • 用類似formatter.formatAsString(targetObject)的方法創建一個「格式化程序」對象。如果您有一些可以存儲在格式器中的格式化選項,這會很有用。
+0

+1 - 總是選擇組合來繼承 – Krease 2013-03-27 05:20:16