我有一个带有模板参数的方法:
public CustomClass getData(Class<? extends InterfaceA> item) {
}
我最终遇到了一种情况,可以使用一个 item
来调用它,该项目可以是一个内部匿名类,它遵循预期的类,但是我如何知道何时将该对象放入我的对象中?方法?
如果我执行 if(item.equals(ConcreteA.class))
,其中 ConcreteA
是正常工作的类,则会失败。
另外,如果我使用类名,我需要使用类似的名称:
item.getName().equals(“com.a.b.Utils$1”);
在这种情况下如何检查实例?
最佳答案
您需要检查类型是否兼容,即InterfaceA
是否是item
的父类(super class)型:
boolean isValidType = InterfaceA.class.isAssignableFrom(item)
API 文档:https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)
关于java - 检查参数化类型是否是特定类型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38118498/