Java: using generic wildcards with subclassing
Posted
by
gibberish
on Stack Overflow
See other posts from Stack Overflow
or by gibberish
Published on 2011-01-07T14:14:57Z
Indexed on
2011/01/07
14:54 UTC
Read the original article
Hit count: 223
Say I have a class Foo, a class A and some subclass B of A. Foo accepts A and its sublclasses as the generic type. A and B both require a Foo instance in their constructor. I want A's Foo to be of type A , and B's Foo to be of type B or a superclass of B. So in effect, So I only want this:
Foo<X> bar = new Foo<X>;
new B(bar);
to be possible if X is either A, B, or a both subclass of A and superclass of B.
So far this is what I have:
class Foo<? extends A>{
//construct
}
class A(Foo<A> bar){
//construct
}
class B(Foo<? super B> bar){
super(bar);
//construct
}
The call to super(...)
doesn't work, because <A>
is stricter than <? super B>
. Is it somehow possible to use the constructor (or avoid code duplication by another means) while enforcing these types?
Edit: Foo keeps a collection of elements of the generic parameter type, and these elements and Foo have a bidirectional link. It should therefore not be possible to link an A to a Foo.
© Stack Overflow or respective owner