所以我用Java编写了这个类:
public class Foo<T>{
}
在这个类中,我想知道T是否实现了某些接口。
下面的代码不起作用,但这正是我想要实现的目标:
if(T.class implements SomeInterface){
// do stuff
}
所以我想检查传递给Foo的类T
的签名上是否有implements SomeInterface
。
有可能吗?多么?
发布于 2013-09-13 18:23:50
您可以使用isAssignableFrom进行检查
if (YourInterface.class.isAssignableFrom(clazz)) {
...
}
或者获取接口的数组,如
Class[] intfs = clazz.getInterfaces();
发布于 2013-09-13 18:25:01
使用isAssignableFrom()
isAssignableFrom()确定此class对象表示的类或接口是否与指定Class参数表示的类或接口相同,或者是该类或接口的超类或超接口。
if (SomeInterface.class.isAssignableFrom(T class)) {
//do stuff
}
https://stackoverflow.com/questions/18783916
复制相似问题