Java 将对象数组强制转换为字符串数组是否使用对象的toString()方法?

Java 将对象数组强制转换为字符串数组是否使用对象的toString()方法?,java,arrays,string,object,Java,Arrays,String,Object,我需要使用对象的toString()方法将其放入数组。我想知道,如果我将数组强制转换为字符串[],它会使用toString()方法吗 例如: public static String[] toStringArray(MyObject[] myObjects) { // Will this return the toString() representation of each object? return (String[])myObjects; } 不,它将以ClassCas

我需要使用对象的
toString()
方法将其放入数组。我想知道,如果我将数组强制转换为
字符串[]
,它会使用
toString()
方法吗

例如:

public static String[] toStringArray(MyObject[] myObjects) {
    // Will this return the toString() representation of each object?
    return (String[])myObjects;
}

不,它将以
ClassCastException
失败

强制转换不会对对象实例进行任何转换。它只是检查它是否具有要将其强制转换到的类型


您可能需要查看
java.util.Arrays.toString(MyObject)
(虽然提供了一个字符串,但不是
String[]
)。

不,它只会因
ClassCastException
而失败

强制转换不会对对象实例进行任何转换。它只是检查它是否具有要将其强制转换到的类型


您可能需要查看
java.util.Arrays.toString(MyObject)
(虽然提供了一个字符串,但不是
字符串[]
)。

最简单的方法是:

public static String[] toStringArray(MyObject[] myObjects) {
    return Stream.of(myObjects)
        .map(MyObject::toString)
        .toArray(String[]::new);
}  

最简单的方法是:

public static String[] toStringArray(MyObject[] myObjects) {
    return Stream.of(myObjects)
        .map(MyObject::toString)
        .toArray(String[]::new);
}  

为什么要用列表呢?因为它很容易写。效率不高,当然,但很简单。你误解我了。您只需执行
返回Stream.of(myObjects).map(MyObject::toString).toArray(String[]::new)。没有必要列清单,是的。这就是我一次做太多事情的结果。劣质代码。为什么要使用列表?因为它很容易编写。效率不高,当然,但很简单。你误解我了。您只需执行
返回Stream.of(myObjects).map(MyObject::toString).toArray(String[]::new)。没有必要列清单,是的。这就是我一次做太多事情的结果。劣质代码。