MIDRANGE dot COM Mailing List Archive



Home » JAVA400-L » September 2009

RE: casting error on ArrayList



fixed



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()]);

Weird.

"hockchai Lim" <lim.hock-chai@xxxxxxxxxxxxxxx> wrote in message
news:<mailman.2229.1253022928.1811.java400-l@xxxxxxxxxxxx>...
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) {

rs.add(str);

}


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

}







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

This mailing list archive is Copyright 1997-2014 by MIDRANGE dot COM and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available here. If you have questions about this, please contact