Как преобразовать Object [] в String [] в Java? - PullRequest
5 голосов
/ 07 октября 2010

У меня вопрос по Java.У меня есть Object[] (Java по умолчанию, а не пользовательский), и я хочу преобразовать его в String[].Может кто-нибудь мне помочь?спасибо.

Ответы [ 4 ]

16 голосов
/ 07 октября 2010

это конверсия

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 и выше

4 голосов
/ 07 октября 2010

Простое приведение типа 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);
2 голосов
/ 07 октября 2010

Полагаю, вы также можете использовать System.arraycopy

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

при условии, strarray имеет длину objarray.length и objarray содержат только строки. Или это бросило бы ArrayStoreException. См. Комментарий aioobe.

2 голосов
/ 07 октября 2010

Я думаю, что это самый простой способ, если все записи в objectArr имеют строковые значения:

for(int i = 0 ; i < objectArr.length ; i ++){
    strArr[i] = (String) objectArr[i];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...