【问题标题】:Arrays toString with objects that also have a toString method具有也具有 toString 方法的对象的数组 toString
【发布时间】:2016-12-21 19:06:00
【问题描述】:

我在打印特殊数组时遇到问题:

我用System.out.println(Arrays.toString()); 打印了一个包含多个对象的数组,但现在该数组充满了对象,这些对象的值是 char,我想打印分配给该对象的每个 char。 如何在代码中做到这一点?

为了澄清,让数组具体如下:

Class[] objList = {new Class(1, 'X'), new Class(4, 'Y')};

我想调用objList[0].toString(),然后调用objList[1].toString() 方法,得到如下输出:

[X, Y]

我希望这个问题足够清楚,如果有人可以帮助我,我会很高兴,谢谢!

注意:上面提到的带有 toString() 方法的 Class 只是在 Class 中实现,写成System.out.print(destination); 我在这里尝试了解释:Use toString on array of objects,但显然它不起作用。

public String toString() {
  System.out.print(Arrays.toString(objList.toString()));
  return null;
}

【问题讨论】:

  • 听起来像你想要的Arrays.deepToString()
  • @Maethor:阅读错误;它需要一个数组,而不是一个字符串。
  • 我试过了,只得到:The method deepToString(Object[]) in the type Arrays is not applicable for the arguments (String)
  • Arrays.deepToString() 将数组作为参数。因此,在没有中间 toString() 的情况下调用它:Arrays.deepToString(objList)
  • 我明白了,现在我在数组前面打印了'X',除此之外它还包含空值

标签: java arrays output


【解决方案1】:

toString() 方法本身不应该打印任何东西;相反,它应该返回一个字符串,它是对象的表示。如果你的类的字符是通过getChar()方法获得的,你可以实现它的toString()方法如下:

public String toString() {
    return String.valueOf(getChar());
}

这会将字符转换为String 并返回。

如果你这样做,代码

Class[] objList = new Class[] { new Class(1,'X'), new Class(2,'Y') };
System.out.println(Arrays.toString(objList));

应该输出[X, Y]

(我建议将您的类 Class 重命名为其他名称,因为它与 Java 的 Class<T> 类冲突。)

【讨论】:

  • 谢谢,这就是我要找的! (而“类”只是一个例子,因为我想让它更短,在我的程序中它有一个不同的名称;)
  • 在示例中使用这样的名称有点令人困惑。
  • 下次我会记住的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 2014-10-04
  • 2022-11-18
  • 1970-01-01
  • 2016-02-20
  • 2017-02-28
相关资源
最近更新 更多