假设我有一个接口
interface I {}
及其两种实现方式class A implements I {}
和class B implements I {}
现在我想写一个通用方法,它接受由"实现接口I"限定的类类型参数,例如
boolean <T> isOK ( Class<T extents I> cl ) {
switch ( cl ) {
case A.class: return true ;
case B.class: return false;
}
}
如何做到这一点?
我想你的意思是:
public <T extends I> boolean isOK(Class<T> cl) {
...
}
泛型类型的限定符位于泛型类型的声明点,即第一个三角括号,而不是第二个。
此外,你不能打开Class
,你必须使用其他东西来检查它,比如if
语句。