49

I am using a web service that returns a plain object of the type "Object". Debug shows clearly that there is some sort of Array in this object so I was wondering how I can cast this "Object" to an Array (or similar)?

I tried the following:

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

But nothing worked. I always get an InvocationTargetException.

What am I doing wrong?

Edit:

Sadly, I had to remove the link to the image that showed the output of Eclipse's debugger because it was no longer available. Please do not wonder why in the answers an image is mentioned that is not there anymore.

2
  • InvocationTargetException contains another Exception. What does it say? Commented Oct 23, 2009 at 6:54
  • Eclipse says ClassCastException. Commented Oct 23, 2009 at 7:01

2 Answers 2

58

Your values object is obviously an Object[] containing a String[] containing the values.

String[] stringValues = (String[])values[0];
Sign up to request clarification or add additional context in comments.

Comments

27

What you've got (according to the debug image) is an object array containing a string array. So you need something like:

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

You haven't shown the type of values - if this is already Object[] then you could just use (String[])values[0].

Of course even with the cast to Object[] you could still do it in one statement, but it's ugly:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.