2012-12-19 21 views
9

Object.toString() JavaDoc的說:爲什麼Java標準庫不實現toString方法?

返回該對象的字符串表示。通常,toString方法會返回一個「文本表示」此對象的字符串。

不過,這麼多標準的Java類,比如,可以有一個非常有用的方法toString()Collections(集合,列表等),不要打擾實現它。這是愚蠢的原因嗎?

或者哎,你想一個十六進制字符串呢? :)

編輯:哎呀,這是我在用我的IDE失敗。我遵循界面而不是實現,並且由於某種原因,我直接跳到了Object.toString()

+0

相關:http://stackoverflow.com/q/2329168/334274 – Jivings

+1

哪些集合類不實現toString?我認爲,所有的人都實現它(的ArrayList,HashMap中,HashSet的) –

+0

Collections是一個實用程序類,所以我沒有任何正當理由的toString方法。如果你指的是Java中的Collection接口,那麼所有的函數都是虛擬的,所以實現中的toString被調用,這在大多數情況下被覆蓋。 – gregory561

回答

6

UPD:

如果你的意思Collection類,所以答案是: 這是不那麼。許多Collection類覆蓋此方法;例如,AbstractCollection類,它有自己的toString實現 - 對於所有繼承的類都是通用的。

如果你的意思Collection[s],那麼這個類有私有構造函數,不能被實例化;所以特殊的toString方法是毫無意義的。

+3

他提到了一個util類而不是Collection的Collections,它是一個接口。 – gregory561

+1

@ gregory561,我擔心,作者做了一個印刷錯誤。 – Andremoniy

+0

在這種情況下,一個問題沒有任何意義,因爲Collection接口不會擴展/實現Object?其中有toString方法。即使這樣做,也不可能在iterface中實現這種方法 – gregory561

2

如果你在談論Collections類,它是實用類,它是沒有必要有toString()方法重寫。通常在實用程序類的情況下,我們使構造函數爲私有,並提供靜態方法。

還要檢查你不能監守它的構造是由私人創建集合類的一個對象。檢查java.util.Collectionssource,行號56

相關問題