Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当给定类的数组时,Java重载toString()方法_Java_Arrays_Object_Overriding_Tostring - Fatal编程技术网

当给定类的数组时,Java重载toString()方法

当给定类的数组时,Java重载toString()方法,java,arrays,object,overriding,tostring,Java,Arrays,Object,Overriding,Tostring,这就是如何重载toString()方法: public class Person extends Object { @Override public final String toString() { Gson gson = new GsonBuilder().serializeNulls().create(); return (gson.toJson(this)); } } 在本例中,当调用Person的toString()方法时,我得

这就是如何重载
toString()
方法:

public class Person extends Object {
    @Override
    public final String toString() {
        Gson gson = new GsonBuilder().serializeNulls().create();
        return (gson.toJson(this));
    }
}
在本例中,当调用
Person
toString()方法时,我得到一个JSON字符串,而不是
对象的默认字符串表示形式

但是如果我有一组

Person[] persons = new Person[3];
System.out.println(persons.toString());
在这种情况下,我必须做什么,或者必须覆盖哪些方法?

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

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

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


如果您使用的是Java集合而不是数组,那么它会将
集合的
toString
方法打印3倍于
集合的
toString
对集合中的每个对象进行迭代。

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

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

您不能在数组上覆盖method
toString
,但可以使用
Arrays.toString(Object[])
打印数组。

您不能在数组上覆盖method
toString
,但可以使用
Arrays.toString(Object[])
打印数组。

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

要打印阵列内容,您可以使用:

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

首先,您不需要扩展对象,它默认存在

要打印阵列内容,您可以使用:

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

它将调用数组toString方法。这就是我所说的,“如果数组有一个toString方法,那么会发生什么”你是对的,但它不会尝试调用Person#toString。实际上,这让我好奇,是否可以使用反射/插装API重写数组变量的toString()方法。可能不是。我在考虑java集合,我修改了我的答案,它将调用数组toString方法。这就是我说的,“如果数组有一个toString方法,会发生什么事情”你是对的,但它不会尝试调用Person#toString。实际上,这让我好奇是否有可能重写toString()使用反射/检测API的数组变量的方法。可能不是。我在考虑java集合,我修改了我的答案。这是不可能的,但可以使用array.toString(Object[]a);它将对数组中的每个对象调用toString()方法。为什么要向下投票并请求关闭此问题?我的意思是,是的,还有一个类似的问题,但我找不到,因为有很多方法可以问这个问题。感谢您的帮助,我将使用
Arrays.toString(Object[]a)
。这是不可能的,但您可以使用Arrays.toString(Object[]a);它将对数组中的每个对象调用toString()方法。为什么要向下投票并请求关闭此问题?我的意思是,是的,还有一个类似的问题,但我找不到,因为有很多方法可以问这个问题。感谢您的帮助,我将使用
Arrays.toString(Object[]a)