1

这是您重载toString()方法的方式:

public class Person extends Object {
    @Override
    public final String toString() {
        Gson gson = new GsonBuilder().serializeNulls().create();
        return (gson.toJson(this));
    }
}

在此示例中,我在调用toString()方法时得到一个 JSON 字符串,Person而不是Object.

但是,如果我有一个Person类似的数组怎么办:

Person[] persons = new Person[3];
System.out.println(persons.toString());

在这种情况下,我必须做什么或必须覆盖哪些方法?

4

4 回答 4

2

您不能覆盖“数组”版本,因为它们不是数组版本。真正发生的是 Array 有一个将被调用的 toString 方法。

如果您使用的是 Java 集合而不是数组,它会在迭代集合中的每个对象时打印出您的Person#toString方法 3 次。Collection#toString

于 2013-06-06T19:25:09.873 回答
1

您不能覆盖默认数组的toString. 如果要将对象数组转换为字符串,请使用Arrays.toString().

于 2013-06-06T19:27:12.630 回答
1

您不能覆盖toString数组上的方法,但可以Arrays.toString(Object[])用来打印数组。

于 2013-06-06T19:28:15.250 回答
1

首先,您不需要扩展 Object,默认情况下它就在那里。

要打印数组内容,您可以使用:

Person[] persons = new Person[3];
System.out.println(Arrays.toString(persons));
于 2013-06-06T19:34:04.720 回答