我有一个关于Java的问题。我有一个Object[](Java默认值,而不是用户定义的),我想将其转换为String[]。有人能帮助我吗?谢谢。
Object[]
String[]
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及以上版本
qmb5sa222#
像这样简单地强制转换String[] strings = (String[]) objectArray;可能不会起作用。试试这样的方法:
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);
jei2mxaa3#
Java 8解决方案:
String[] strArr = Arrays.stream(objArr).map(Object::toString).toArray(String[]::new);
xam8gpfp4#
我认为这是最简单的方法,如果objectArr中的所有条目都是String:
for(int i = 0 ; i < objectArr.length ; i ++){ strArr[i] = (String) objectArr[i]; }
uubf1zoe5#
你也可以使用System.arraycopy
System.arraycopy(objarray, 0, strarray, 0, objarray.length);
如果strarray的长度为objarray.length,objarray只包含字符串。否则会抛出ArrayStoreException。请参阅aioobe的注解。
strarray
objarray.length
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]
k0pti3hp7#
参数toArray只是类型的占位符,因此您不需要分配特定的大小。使用下面的代码行就可以了:
toArray
String[] array = list.toArray(new String[0]);
下面是上面那行的另一个变体:
String [] strArr = Arrays.asList(Object_Array).toArray(new String[0]);
7条答案
按热度按时间2w2cym1i1#
这就是转化
这是选角
更新:
调整1
调整2
注意:只有当对象都是String时才有效;他现在的代码即使不工作也能工作
forTweak 1:仅适用于Java 1.6及以上版本
qmb5sa222#
像这样简单地强制转换
String[] strings = (String[]) objectArray;
可能不会起作用。试试这样的方法:
然后可以像这样使用该函数
或者像这样
jei2mxaa3#
Java 8解决方案:
xam8gpfp4#
我认为这是最简单的方法,如果objectArr中的所有条目都是String:
uubf1zoe5#
你也可以使用System.arraycopy
如果
strarray
的长度为objarray.length
,objarray只包含字符串。否则会抛出ArrayStoreException。请参阅aioobe的注解。v09wglhw6#
我的观点并不完全适合这个答案(特定于场景),但它可能会发生,有人在不知不觉中结束了对象[]。
在我的例子中,我试图将List转换为String[] &在list上使用.toArray()时,它将其转换为Object[]
因此,具体到上述场景,一行解决方案
k0pti3hp7#
参数
toArray
只是类型的占位符,因此您不需要分配特定的大小。使用下面的代码行就可以了:
下面是上面那行的另一个变体: