在Java中是否可以覆盖Objects数组的'toString'?

Pop*_*oko 17 java arrays string tostring

在Java中是否可以覆盖Objects数组的toString?

例如,假设我创建了一个简单的类,User(因为这是一个普遍的问题,所以它不属于哪个类).有可能,一旦客户端创建一个User[]数组并且客户端使用System.out.print(array)它,它就不会打印数组的地址而是自定义的toString()

PS:当然我不能toString()在我的课程中覆盖,因为它与单个实例有关.

The*_*ell 17

当然,您可以创建静态方法User.toString(User []),但不会隐式调用它.

  • 了解.这就是为什么我的回答的第一个字是"不". (6认同)

Dec*_*eco 9

您可以使用Arrays.toString(Object[] a);哪个将toString()在数组中的每个对象上调用该方法.

编辑(来自评论):

我理解你正在努力实现的目标,但Java目前还不支持.

在Java中,数组是动态创建的对象,可以分配给Object类型的变量.可以在数组上调用Object类的所有方法.见JLS Ch10

当您调用toString()对象时,它返回一个"文本表示"该对象的字符串.因为数组是Object的一个实例,所以你只能获得类的名称,@和十六进制值.请参见Object#toString

所述Arrays.toString()方法返回数组作为列表,其被遍历并相当于toString()称为列表中的每个对象上.

所以,虽然你无法做到,但System.out.println(userList);你可以做到System.out.println(Arrays.toString(userList);哪些基本上可以达到同样的目的.