My guess is:

return (String[]) rs.toArray(new String[rs.size()]);
works because new String[rs.size()] is unquestionably an array of
String. Cast is unnecessary.

return (String[]) rs.toArray();
doesn't work because rs.toArray() returns an array of Objects. I
don't think you can cast an array of objects into an array of Strings.

I think you have to cast them individually. Eg

Object[] outObjectArray = rs.toArray();
String[] outStringArray = String[outObjectArray.size)];
For( int i=0; I < outObjectArray.size; i++)
outStringArray[i] = (String)outObjArray[i];
return outStringArray;

-----Original Message-----
From: java400-l-bounces@xxxxxxxxxxxx
[mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Lim Hock-Chai
Sent: Tuesday, September 15, 2009 9:29 AM
To: java400-l@xxxxxxxxxxxx
Subject: Re: casting error on ArrayList

Ok. Below works:

return (String[]) rs.toArray(new String[rs.size()]);


"hockchai Lim" <lim.hock-chai@xxxxxxxxxxxxxxx> wrote in message
I'm getting a cast error "java.lang.ClassCastException:
incompatible with [Ljava.lang.String;" and not sure why and how to
it. Help. . . ..

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

String str;

bin= new BufferedReader(new

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



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


This thread ...


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