Saya menggunakan kode berikut untuk mengubah array objek ke array string:
Object Object_Array[]=new Object[100];
// ... get values in the Object_Array
String String_Array[]=new String[Object_Array.length];
for (int i=0;i<String_Array.length;i++) String_Array[i]=Object_Array[i].toString();
Tetapi saya bertanya-tanya apakah ada cara lain untuk melakukan ini, sesuatu seperti:
String_Array=(String[])Object_Array;
Tetapi ini akan menyebabkan kesalahan runtime: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
Apa cara yang benar untuk melakukannya?
Jawaban:
Alternatif lain untuk
System.arraycopy
:sumber
Di Jawa 8:
Untuk mengonversi array jenis lain:
sumber
System.arraycopy mungkin cara yang paling efisien, tetapi untuk estetika, saya lebih suka:
sumber
copyof
. Apakah Anda merujuk ke jawaban lain?Saya melihat bahwa beberapa solusi telah disediakan tetapi tidak ada sebab-sebab, jadi saya akan menjelaskan ini secara terperinci karena saya percaya penting untuk mengetahui kesalahan apa yang Anda lakukan hanya untuk mendapatkan "sesuatu" yang bekerja dari balasan yang diberikan.
Pertama, mari kita lihat apa yang dikatakan Oracle
Ini mungkin tidak terlihat penting tetapi seperti yang Anda lihat ... Jadi, apa yang gagal dilakukan oleh baris berikut? Semua objek dalam daftar adalah String tetapi tidak mengubahnya, mengapa?
Mungkin, banyak dari Anda akan berpikir bahwa kode ini melakukan hal yang sama, tetapi tidak.
Padahal pada kenyataannya kode tertulis melakukan sesuatu seperti ini. Javadoc mengatakannya! Ini akan membuat array baru, apa itu akan menjadi Objek !!!
Jadi tList.toArray adalah instantiating Objects dan bukan Strings ...
Oleh karena itu, solusi alami yang belum disebutkan di utas ini, tetapi itulah yang direkomendasikan Oracle sebagai berikut
Semoga cukup jelas.
sumber
(String)Object_Array[i]
atauObject_Array[i].toString()
atau mengalokasikan array sebagai array StringObject Object_Array[]=new String[100];
... dapatkan nilai ... lalu corString_Array=(String[])Object_Array
yang sekarang berfungsi.Kerangka kerja koleksi google menawarkan penawaran metode transformasi yang baik, sehingga Anda dapat mengubah Objek Anda menjadi Strings. Satu-satunya downside adalah bahwa itu harus dari Iterable ke Iterable tetapi ini adalah cara saya akan melakukannya:
Ini membawa Anda jauh dari menggunakan array, tapi saya pikir ini akan menjadi cara yang saya sukai.
sumber
Jika Anda ingin mendapatkan representasi String dari objek dalam array Anda, maka ya, tidak ada cara lain untuk melakukannya.
Jika Anda tahu array Obyek Anda hanya berisi Strings, Anda juga dapat melakukan (instread memanggil toString ()):
Satu-satunya kasus ketika Anda bisa menggunakan cast ke String [] dari Object_Array adalah jika array yang dirujuknya akan benar-benar didefinisikan sebagai String [], misalnya ini akan bekerja:
sumber
Yang ini bagus, tetapi tidak berfungsi seperti yang saya perhatikan, karena tanda kurung:
Arrays.toString(objectArray).split(",")
Yang ini jelek tapi berfungsi:
Arrays.toString(objectArray).replaceFirst("^\\[", "").replaceFirst("\\]$", "").split(",")
Jika Anda menggunakan kode ini, Anda harus yakin bahwa string yang dikembalikan oleh toString () objek Anda tidak mengandung koma.
sumber
Untuk ide Anda, sebenarnya Anda sedang mendekati kesuksesan, tetapi jika Anda memang suka ini, boleh saja:
BTW, menggunakan metode utilitas Array cukup baik dan membuat kode elegan.
sumber
sumber
Kamu bisa memakai tipe-konverter . Untuk mengonversi array jenis apa pun ke array string, Anda dapat mendaftarkan konverter Anda sendiri:
dan gunakan itu
sumber
Mudah berubah tanpa headche apapun Konversi array objek apa pun menjadi string array Object drivex [] = {1,2};
sumber