我们是否决定不执行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. Java中的闭包如何使API设计取代语言设计?
- 2. C#语言设计支柱
- 3. DLR语言设计示例
- 4. REST API,多语言设计
- 5. 关于程序设计语言史的资源,特别是Java
- 6. 语言集成的设计模式
- 7. 汇编语言的设计模式
- 8. 多语言网站的设计模式?
- 9. 非OOP语言的设计模式
- 10. 编程语言设计的好资源?
- 11. 计算的sin(x)使用Fortran语言
- 12. 使用episerver的多语言网站设计CMS
- 13. C语言的Java建模语言?
- 14. UILocalNotification NSLocalizedString使用设备的语言
- 15. Java表达式语言错误“;”预计
- 16. 如何在使用多种语言时设计表格
- 17. 在.Net 2.0中使用Irony进行自定义语言设计
- 18. 多语言表设计问题
- 19. UML设计工具和实现语言
- 20. 语言设计:结合Gotos和函数
- 21. 设计一个多语言网站
- 22. C语言程序设计,指针
- 23. 多语言数据库设计方法
- 24. 语言数据库表设计
- 25. 在java语言
- 26. Java:强制执行的设计接口覆盖toString
- 27. 用于设计语言类型系统的正确的类设计
- 28. 如何在Java中设置语言?
- 29. 设置语言
- 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