2009-10-23 54 views
19

Tôi đang sử dụng dịch vụ web trả về đối tượng thuần túy thuộc loại "Đối tượng". Debug cho thấy rõ ràng rằng có một số loại mảng trong đối tượng này vì vậy tôi đã tự hỏi làm thế nào tôi có thể đúc này "đối tượng" để một mảng (hoặc tương tự)?Java: Đúc đối tượng vào loại mảng

tôi thử như sau:

Collection<String> arr = (Collection<String>) values; 
Vector<String> arr = (Vector<String>) values; 
ArrayList<String> arr = (ArrayList<String>) values; 

Nhưng không có gì làm việc. Tôi luôn nhận được một InvocationTargetException.

Tôi đang làm gì sai?

Sửa:

Đáng buồn thay, tôi đã phải loại bỏ các liên kết đến các hình ảnh cho thấy đầu ra của debugger Eclipse vì nó đã không còn nữa. Xin vui lòng không tự hỏi tại sao trong các câu trả lời một hình ảnh được đề cập đó là không có nữa.

+0

InvocationTargetException chứa ngoại lệ khác. Nó nói gì? –

+0

Eclipse nói ClassCastException. – Jens

Trả lời

32

Đối tượng values của bạn rõ ràng là một Object[] chứa String[] chứa các giá trị.

String[] stringValues = (String[])values[0]; 
+0

Điều đó đã làm được điều đó! Cảm ơn nhiều! – Jens

17

Những gì bạn có (theo hình ảnh gỡ lỗi) là mảng đối tượng chứa mảng chuỗi. Vì vậy, bạn cần một cái gì đó như:

Object[] objects = (Object[]) values; 
String[] strings = (String[]) objects[0]; 

Bạn chưa thể hiện loại values - nếu điều này đã là Object[] sau đó bạn chỉ có thể sử dụng (String[])values[0].

Dĩ nhiên ngay cả với các diễn viên để Object[] bạn vẫn có thể làm điều đó trong một tuyên bố, nhưng nó xấu xí:

String[] strings = (String[]) ((Object[])values)[0]; 
Các vấn đề liên quan