我有一个关于Java的问题。我有一个Object[]
(Java默认,不是用户定义的),我想将它转换为一个String[]
。有人可以帮助我吗?谢谢。
这是转换内容
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);
Tweak2
Arrays.asList(Object_Array).toArray(new String[Object_Array.length]);
注意: 仅当对象全部为字符串时才有效;他当前的代码即使它们不是字符串也可以正常工作。
forTweak1: 仅适用于Java 1.6及以上版本。
Object
作为标识符似乎不是一个好主意,而您建议的强制转换会导致ClassCastException
。 - aioobe仅仅像这样强制转换 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);
String.valueOf
(在早期版本中有它 :-) 已更正。谢谢。 - aioobeJava 8的解决方案:
String[] strArr = Arrays.stream(objArr).map(Object::toString).toArray(String[]::new);
如果objectArr中的所有条目都是字符串,我认为这是最简单的方法:
for(int i = 0 ; i < objectArr.length ; i ++){
strArr[i] = (String) objectArr[i];
}
System.arraycopy(objarray, 0, strarray, 0, objarray.length);
我的观点并不完全适用于答案(特定情况),但可能会发生某人无意中结束在object[]中。
在我的情况下,我试图将List转换为String[],在列表上使用.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]
toArray
参数只是一个占位符,因此您不需要分配特定的大小。
使用以下代码即可:
String[] array = list.toArray(new String[0]);
String [] strArr = Arrays.asList(Object_Array).toArray(new String[0]);