IIRC you are fairly new to Java. I am by no means a Java expert, but I've
taught myself and been there so I thought I would give you a few tips.

Firstly, always try to use the most generic type possible. So, your
ArrayList should be a List, e.g. List<String> rs = new ArrayList<String>();.

With a number as small as 20 there is no real need to construct it with that

If it were me I would probably also not return an array of strings, but
return a collection of type string. If you are worried about it be immutable
look at Collections.unmodifiableList().

Now, all that being said if you still need to return an array all you need
to do is rs.toArray(new String[0]). This has to do with generics. The
default List.toArray() method will only return an array of objects. The
List.toArray(T[]) is used to return the generic type. Without looking at the
code I couldn't tell you why it's designed like that, but Joshua Bloch had a
lot to do with the Collections library, so I trust there may be a good

At any rate I hope this helps. Let me know if you want any clearer

James R. Perkins

On Tue, Sep 15, 2009 at 06:49, hockchai Lim

I'm getting a cast error "java.lang.ClassCastException: [Ljava.lang.Object;
incompatible with [Ljava.lang.String;" and not sure why and how to resolve
it. Help. . . ..

ArrayList<String> rs = new ArrayList<String>( 20 );

String str;

bin= new BufferedReader(new InputStreamReader(process.getInputStream()));

while ((str = bin.readLine()) != null) {



return (String[]) rs.toArray(); // =======> Getting the casting error:


This is the Java Programming on and around the iSeries / AS400 (JAVA400-L)
mailing list
To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives

This thread ...


Return to Archive home page | Return to MIDRANGE.COM home page