代码之家  ›  专栏  ›  技术社区  ›  Christian

基于toString的Java语言设计

  •  9
  • Christian  · 技术社区  · 14 年前

    toString 方法 int[] ,而是让它继承 方法来自 Object

    4 回复  |  直到 8 年前
        1
  •  9
  •   Paul Bellora    11 年前

    他们确实实施了更为合理的政策 toString 数组的方法。它们位于 java.util.Arrays

    至于推理。我是根据 Arrays 托斯特林 对于不同类型的数组,这要么是复杂的,要么是不可能的。这个 托斯特林 方法必须知道它处理的是什么类型的数组,并适当地输出数据。例如, Object[] 托斯特林 char[] 必须输出字符,并且必须将数字数据类型转换为数字字符串。

    数组 免费获取这个,因为由于重写,类型是固定的。

        2
  •  2
  •   hvgotcodes    14 年前

    他们给了你一个默认值,如果你想让它成为其他的东西很容易做到。

    您可以使用apache的ToStringBuilder使它更简单。。。

    http://commons.apache.org/lang/api/org/apache/commons/lang/builder/ToStringBuilder.html

        3
  •  2
  •   David Webb    14 年前

    我的猜测是,因为数组对象不是由语言设计者在Java源代码中创建的,而是由Java编译器创建的。请记住,您可以拥有任何对象类型的数组,因此编译器会根据您需要的类型创建相应的数组对象。

    如果他们要创建一个标准方法,那么这个方法应该如何工作还不是很清楚。例如,执行 toString() toString() 方法来保持所有数组的一致性。

    诚然,这很烦人,有时我确实会想一些类似的事情 "Array[" + size + "] of " + getClassName()

        4
  •  1
  •   DJClayworth    14 年前

    有点猜测,但是。。。

    int数组没有明显的字符串表示形式。人们用不同的方法来做:逗号分隔,空格分隔,用括号或圆括号括起来,或者什么都不做。这可能促使人们决定不在Java1.1中实现它,同时它也是低优先级代码(因为任何人都可以实现一个方法,将数组本身作为字符串来编写)。

    现在您不能在Java1.2或更高版本中升级它,因为这将破坏任何已经使用旧行为的人的兼容性。但是,您可以添加一个实现某些功能的实用程序类,这就是他们对java.util.Arrays所做的。