MIDRANGE dot COM Mailing List Archive



Home » JAVA400-L » September 2009

Re: casting error on ArrayList



fixed

Thanks James. Took you advice and change it to return a List object.

"James Perkins" <jrperkinsjr@xxxxxxxxx> wrote in message
news:<mailman.2262.1253030380.1811.java400-l@xxxxxxxxxxxx>...
Lim,
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
size.

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
reason.

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

--
James R. Perkins
http://twitter.com/the_jamezp


On Tue, Sep 15, 2009 at 06:49, hockchai Lim
<lim.hock-chai@xxxxxxxxxxxxxxx>wrote:

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:

}


--
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,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-l.







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