Tôi thấy rằng một số giải pháp đã được cung cấp nhưng không phải là bất kỳ nguyên nhân nào vì vậy tôi sẽ giải thích chi tiết điều này vì tôi tin rằng điều quan trọng là bạn phải làm gì sai chỉ để nhận "một cái gì đó" hoạt động từ các câu trả lời đã cho.
Đầu tiên, hãy xem Oracle nói gì
* <p>The returned array will be "safe" in that no references to it are
* maintained by this list. (In other words, this method must
* allocate a new array even if this list is backed by an array).
* The caller is thus free to modify the returned array.
Nó có thể trông không quan trọng nhưng như bạn sẽ thấy ... Vậy dòng sau đây thất bại là gì? Tất cả các đối tượng trong danh sách là String nhưng nó không chuyển đổi chúng, tại sao?
List<String> tList = new ArrayList<String>();
tList.add("4");
tList.add("5");
String tArray[] = (String[]) tList.toArray();
Có lẽ, nhiều bạn sẽ nghĩ rằng mã này đang làm như vậy, nhưng thực tế không phải vậy.
Object tSObjectArray[] = new String[2];
String tStringArray[] = (String[]) tSObjectArray;
Khi trong thực tế, mã viết đang làm một cái gì đó như thế này. Các javadoc đang nói nó! Nó sẽ tạo ra một mảng mới, nó sẽ là gì của các đối tượng !!!
Object tSObjectArray[] = new Object[2];
String tStringArray[] = (String[]) tSObjectArray;
Vì vậy, tList.toArray đang khởi tạo một Đối tượng chứ không phải Chuỗi ...
Do đó, giải pháp tự nhiên chưa được đề cập trong chủ đề này, nhưng đó là những gì Oracle khuyến nghị là như sau
String tArray[] = tList.toArray(new String[0]);
Hy vọng nó là đủ rõ ràng.