Que*_*ons 5 java string object
我有一个关于Java的问题.我有Object[](Java默认,不是用户定义的),我想将其转换为String[].谁能帮我?谢谢.
Jig*_*shi 17
这是转换
for(int i = 0 ; i < objectArr.length ; i ++){
try {
strArr[i] = objectArr[i].toString();
} catch (NullPointerException ex) {
// do some default initialization
}
}
Run Code Online (Sandbox Code Playgroud)
这是铸造
String [] strArr = (String[]) objectArr; //this will give you class cast exception
Run Code Online (Sandbox Code Playgroud)
更新:
调整1
String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);
Run Code Online (Sandbox Code Playgroud)
Tweak2
Arrays.asList(Object_Array).toArray(new String[Object_Array.length]);
Run Code Online (Sandbox Code Playgroud)
注意:仅当对象都是字符串时才有效; 他现在的代码即使不是
forTweak1:仅适用于Java 1.6及更高版本
简单地像这样进行铸造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;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用该函数
Object[] objs = { "hello world", -1.0, 5 };
String[] strings = asStrings(objs);
Run Code Online (Sandbox Code Playgroud)
或者像这样
String[] strings = asStrings("hello world", -1.0, 5);
Run Code Online (Sandbox Code Playgroud)
Java 8解决方案:
String[] strArr = Arrays.stream(objArr).map(Object::toString).toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)