Generics, oddly enough, use extends
for interfaces as well.1 You'll want to use:
public class Foo<T extends SomeInterface>{
//use T as you wish
}
This is actually a requirement for the implementation, not a true/false check.
For a true/false check, use unbounded generics(class Foo<T>{
) and make sure you obtain a Class<T>
so you have a refiable type:
if(SomeInterface.class.isAssignableFrom(tClazz));
where tClazz
is a parameter of type java.lang.Class<T>
.
If you get a parameter of refiable type, then it's nothing more than:
if(tParam instanceof SomeInterface){
but this won't work with just the generic declaration.
1If you want to require extending a class and multiple interfaces, you can do as follows: <T extends FooClass & BarInterface & Baz>
The class(only one, as there is no multiple inheritance in Java) must go first, and any interfaces after that in any order.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…