Re: How to not use casting to invoke the methods of a List of objects
On 07/20/2012 06:58 AM, clusardi2k@aol.com wrote:
Below uses a List of objects of class Route. Class Route has public member
Public variables are frowned upon in Java. That doesn't mean never use them,
but it does make me wonder why you also defined an accessor method.
variables (such as locationid) and public methods (such as get_locationid()).
You should follow the Java naming conventions: locationId and getLocationId().
Camel case. No underscores.
Don't describe your code. That's all but useless. Show your code.
http://sscce.org/
The below code is a first attempt at a way to obtain the value of locationid
using casting. Question: What is the code to do it a better way.
In addition to what everyone else has said
((Route)objList.get(0)).locationid;
'objList' is a bad name. You have a collection of 'Route's, right? So your
variable should be 'routes'.
((Route)objList.get(1)).locationid;
Why are you casting at all?
Route route = routes.get(0);
You did declare your list as a 'List<Route>', of course, right?
The below start of replacement code fails because it skips through the list. There wasn't a good reason for me to finish the code! The loop can't even iterate the required number of loops.
Iterator <Route> it = objList.iterator();
Indent enough?
int size = objList.size();
for (int i = 0;i < size; i++)
{
it.next();
}
You shouldn't use both indexes and iterators in the same loop. Stick with one
or another for any given loop.
You should never use an iterator 'next()' without checking 'hasNext()' first.
You often can, and therefore in those cases should, use the for-each loop, as
others have already said:
for (Route route : routes)
{
doSomethingWith(route);
}
--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg