如何在Java中将Object[]转换为String[]?

gpnt7bae  于 2023-04-19  发布在  Java
关注(0)|答案(7)|浏览(163)

我有一个关于Java的问题。我有一个Object[](Java默认值,而不是用户定义的),我想将其转换为String[]。有人能帮助我吗?谢谢。

2w2cym1i

2w2cym1i1#

这就是转化

for(int i = 0 ; i < objectArr.length ; i ++){  
   try {
      strArr[i] = objectArr[i].toString();
   } catch (NullPointerException ex) {
       // do some default initialization
   }
}

这是选角

String [] strArr = (String[]) objectArr;  //this will give you class cast exception

更新:
调整1

String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);

调整2

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

注意:只有当对象都是String时才有效;他现在的代码即使不工作也能工作

forTweak 1:仅适用于Java 1.6及以上版本

qmb5sa22

qmb5sa222#

像这样简单地强制转换String[] strings = (String[]) objectArray;可能不会起作用。
试试这样的方法:

public static String[] asStrings(Object... objArray) {
    String[] strArray = new String[objArray.length];
    for (int i = 0; i < objArray.length; i++)
        strArray[i] = String.valueOf(objArray[i]);
    return strArray;
}

然后可以像这样使用该函数

Object[] objs = { "hello world", -1.0, 5 };
String[] strings = asStrings(objs);

或者像这样

String[] strings = asStrings("hello world", -1.0, 5);
jei2mxaa

jei2mxaa3#

Java 8解决方案:

String[] strArr = Arrays.stream(objArr).map(Object::toString).toArray(String[]::new);
xam8gpfp

xam8gpfp4#

我认为这是最简单的方法,如果objectArr中的所有条目都是String:

for(int i = 0 ; i < objectArr.length ; i ++){
    strArr[i] = (String) objectArr[i];
}
uubf1zoe

uubf1zoe5#

你也可以使用System.arraycopy

System.arraycopy(objarray, 0, strarray, 0, objarray.length);

如果strarray的长度为objarray.length,objarray只包含字符串。否则会抛出ArrayStoreException。请参阅aioobe的注解。

v09wglhw

v09wglhw6#

我的观点并不完全适合这个答案(特定于场景),但它可能会发生,有人在不知不觉中结束了对象[]。
在我的例子中,我试图将List转换为String[] &在list上使用.toArray()时,它将其转换为Object[]
因此,具体到上述场景,一行解决方案

List<String> list = Arrays.asList("a", "b", "c", "d");
String[] array = list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(array)); // [a, b, c, d]
k0pti3hp

k0pti3hp7#

参数toArray只是类型的占位符,因此您不需要分配特定的大小。
使用下面的代码行就可以了:

String[] array = list.toArray(new String[0]);

下面是上面那行的另一个变体:

String [] strArr = Arrays.asList(Object_Array).toArray(new String[0]);

相关问题