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:
}