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

Generics problem

 
Dave Tong
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Imagine this:

class ConcreteClass extends AbstractClass

public class Main {

public void doVector(Vector<AbstractClass> vector) {
for (AbstractClass ob : vector) {
// do Something
}
}

public Main() {
}

public static void main(String[] args) {
Main main = new Main();

Vector<ConcreteClass> vector = new Vector();
vector.add(new ConcreteClass());
main.doVector(vector);
}
}

This won't compile because vector is Vector<ConcreteClass> not Vector<AbstractClass>
even though ConcreteClass is a subclass of AbstractClass

I can get past this by casting vector to a simple untyped Vector,
although the compiler b!tches about unchecked conversions.

Alternatively I could declare my vectors as Vector<AbstractClass>
but in my application I actually have multiple different Concrete classes so that doesn't help.

Is there another solution that I'm missing?
 
Keith Lynn
Ranch Hand
Posts: 2409
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Have you tried something like



?

This wouldn't allow you to add to the Vector, but you could iterate through it.
 
Dave Tong
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
That's exactly what I needed. Completely brilliant. Thanks!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic