Question:
I want to have a Class object, but I want to force whatever class it represents to extend class A and implement interface B.I can do:
Best Answer:
Actually, you can do what you want. If you want to provide multiple interfaces or a class plus interfaces, you have to have your wildcard look something like this:& InterfaceName
for each one that you need.This can get arbitrarily complicated. To demonstrate, see the JavaDoc declaration of
Collections#max
, which (wrapped onto two lines) is:It looks like this doesn’t work for variable declaration, but it does work when putting a generic boundary on a class. Thus, to do what you want, you may have to jump through a few hoops. But you can do it. You can do something like this, putting a generic boundary on your class and then:
variable
that has the restriction that you want. For more information and examples, check out page 3 of Generics in Java 5.0. Note, in <T extends B & C>
, the class name must come first, and interfaces follow. And of course you can only list a single class.If you have better answer, please add a comment about this, thank you!
Source: Stackoverflow.com
Leave a Review