我們是否決定不執行int[]
的toString
方法,而是讓它繼承Object
的toString
方法?使用toString的Java語言設計
回答
他們確實爲陣列實施了更合理的toString
方法。他們位於java.util.Arrays
班。
至於推理。我假設在Arrays
類中提供的覆蓋,試圖爲不同類型的數組實現通用toString
要麼複雜要麼不可能。 toString
方法將不得不知道它正在處理什麼類型的數組,並且適當地輸出數據。例如,Object[]
必須在每個元素上使用toString
,而char[]
必須輸出該字符,並且數字數據類型必須轉換爲數字字符串。
Arrays
中的方法免費得到這個,因爲這些類型是由於覆蓋而固定的。
事實上,將Object改爲對數組有一個合理的toString()非常簡單,只是不推薦。甚至更好的int []有它自己的類,它知道它的類型可以做什麼toString(int [])。 – 2010-07-23 15:49:55
'改變對象有一個明智的toString()爲數組'?您是否打算修補sun源代碼? – 2010-07-23 18:36:19
Sun一直對源代碼進行修復和發佈,Java 6已經升級到了21. – 2010-07-28 06:02:23
我猜想是因爲以下原因:他們如何知道用戶如何展示他們的數組?它可能「數組大小:10」或它可能是「[x,y,z]」。
他們給了你一個默認值,如果你想使其他東西很容易做到。
您可以使用Apache的ToStringBuilder使其更容易...
http://commons.apache.org/lang/api/org/apache/commons/lang/builder/ToStringBuilder.html
不僅如此,在一個包含100,000個元素的數組上調用'toString()'可能是災難性的。 'toString()'的目的不僅僅是顯示一個對象的內容,而且還要顯示一個可讀的形式以顯示在工具,調試器等中。 – 2010-07-23 15:59:50
我的猜測是,由於Array對象是在Java源代碼的語言設計者不會創建 - 他們被創建Java編譯器。請記住,您可以擁有任何對象類型的數組,因此編譯器會根據您需要的類型適當地創建Array對象。
如果他們要創建一個標準的方法,它應該如何工作並不明顯。例如,執行toString()
並連接結果可能適用於小數組,但它不適用於多維數組或具有1,000個條目的數組。所以我認爲沒有創建toString()
方法來保持所有數組一致。
不可否認,這是令人討厭的,有時候我認爲沿着"Array[" + size + "] of " + getClassName()
的路線會比默認好得多。
我認爲,這個的第一部分會觸及它在頭上。 – 2010-07-23 15:44:23
猜測有點這裏,但是...
沒有一個int數組的一個明顯的字符串表示。人們以不同的方式做到這一點:逗號分隔,空格分隔,括在括號或括號中或者什麼都不用。這可能會促使決定不在Java 1.1中實現它,同時它也是低優先級的代碼(因爲任何人都可以實現一種方法,將一個數組作爲一個字符串自己編寫,非常簡單)。
現在,您無法在Java 1.2或更高版本中升級它,因爲這會破壞已使用舊行爲的任何人的兼容性。但是,您可以添加一個實現一些功能的實用程序類,這就是他們對java.util.Arrays所做的。
- 1. Newtonsoft Jtokne的toString轉換時的設備語言不是英語
- 2. Java中的閉包如何使API設計取代語言設計?
- 3. REST API,多語言設計
- 4. DLR語言設計示例
- 5. C#語言設計支柱
- 6. 用C語言計算C2000設備
- 7. PHP - 多語言應用程序設計
- 8. 爲什麼支付網關只能用Java語言設計?
- 9. 在Mule中使用導入的Java語言表達式語言
- 10. 關於程序設計語言史的資源,特別是Java
- 11. 語言集成的設計模式
- 12. 多語言網站的設計模式?
- 13. 彙編語言的設計模式
- 14. 編程語言設計的好資源?
- 15. 非OOP語言的設計模式
- 16. IOS中的多語言設計支持
- 17. 計算的sin(x)使用Fortran語言
- 18. 使用episerver的多語言網站設計CMS
- 19. 使用程序和OOP語言的遊戲設計差異
- 20. 使用Web套接字時的請求/響應「語言」設計
- 21. 使計算器使用C語言
- 22. 使用Java語言編寫的圖案
- 23. C語言的Java建模語言?
- 24. 使用jQuery設置語言的cookies
- 25. UILocalNotification NSLocalizedString使用設備的語言
- 26. 在C語言中使用父類的ToString而不用在C語言中強制轉換
- 27. 在java中設置語言環境(語言支持)
- 28. Java語言對計算不準確嗎?
- 29. Java表達式語言錯誤「;」預計
- 30. java語言的語法
如果你需要的功能...你知道'java.util.Arrays.toString' ...嗎? – 2010-07-23 15:15:48
@Konrad,但它是一個糟糕的設計選擇使用工具類,只是一個實用的一個恕我直言。 – 2010-07-23 15:52:03
@彼得:我沒有捍衛它。就我而言,Java是一系列糟糕的設計選擇。 – 2010-07-24 10:53:35