我使用以下代码将Object数组转换为String数组:

Object Object_Array[]=new Object[100];
// ... get values in the Object_Array

String String_Array[]=new String[Object_Array.length];

for (int i=0;i<String_Array.length;i++) String_Array[i]=Object_Array[i].toString();

但我想知道是否有另一种方法来做到这一点,比如:

String_Array=(String[])Object_Array;

但是这会导致一个运行时错误:线程"AWT-EventQueue-0"中的异常不能强制转换为[Ljava.lang.String];

正确的做法是什么?


当前回答

系统。arraycopy可能是最有效的方法,但为了美观,我更喜欢:

 Arrays.asList(Object_Array).toArray(new String[Object_Array.length]);

其他回答

对于你的想法,实际上你正在接近成功,但如果你这样做应该没问题:

for (int i=0;i<String_Array.length;i++) String_Array[i]=(String)Object_Array[i];

顺便说一句,使用Arrays实用程序方法是非常好的,使代码优雅。

轻松改变,没有任何头痛 将任意对象数组转换为字符串数组 对象drivex[] = {1,2};

    for(int i=0; i<drive.length ; i++)
        {
            Str[i]= drivex[i].toString();
            System.out.println(Str[i]); 
        }

系统。arraycopy可能是最有效的方法,但为了美观,我更喜欢:

 Arrays.asList(Object_Array).toArray(new String[Object_Array.length]);

谷歌集合框架提供了一个很好的转换方法,因此您可以将对象转换为字符串。唯一的缺点是它必须从Iterable到Iterable,但这是我要做的方式:

Iterable<Object> objects = ....... //Your chosen iterable here
Iterable<String> strings = com.google.common.collect.Iterables.transform(objects, new Function<Object, String>(){
        String apply(Object from){
             return from.toString();
        }
 });

这样你就不用数组了,但我认为这是我更喜欢的方式。

这个很好,但不像mmyers注意到的那样,因为方括号:

Arrays.toString(objectArray).split(“,”)

下面这个很丑,但很管用:

Arrays toString (objectArray)。replaceFirst ("^\\[", "").replaceFirst ("\\]$", ""). (“分裂,”)

如果使用此代码,必须确保对象的toString()返回的字符串不包含逗号。