Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

get objects of the certain type from Collection

 
Kuba Zygmunt
Ranch Hand
Posts: 37
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

Below you can see a simple hierarchy of Bike's family.


So, I have a Collection<Bike> and I would like to get all bikes of the certain type. What I've done is :


so I compare classes ( I dont want to use instanceof because I'm interested in a concrete class ( not superclass ).

Another way to do it is to create a BikeType class which stores and defines all used type of bikes, and then a super class Bike will have an additional field
BikeType bikeType;

and then I could compare bikes in collection using that property .
I dont know if the 2nd option is better, because when you add new class you will have to change bikeType.

What's your opinion ?
 
Kuba Zygmunt
Ranch Hand
Posts: 37
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
there is an error in the code

should be:

if (bike.getClass() == bikeType.getClass())
newList.add(booking);
}
 
Rob Spoor
Sheriff
Pie
Posts: 20511
54
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'd go with a slightly modified version of your original code:

Of course this allows also non-bike classes to be passed.

So another modification, to allow only the Bike class and its subclasses:

There is another improvement to be made now: you know that everything inside the collection will be of the given type. So:


You can now do stuff like this:

[ November 22, 2007: Message edited by: Rob Prime ]
 
Kuba Zygmunt
Ranch Hand
Posts: 37
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Great !

Thank you for showing me this approach
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic