我有一个带模板参数的方法:
public CustomClass getData(Class<? extends InterfaceA> item) {
}
我最后得到一个案例,可以使用item
来调用它,它可以是一个符合预期类的内部匿名类,但是如果我在方法中得到这个对象怎么知道呢?登记/>
如果我if(item.equals(ConcreteA.class))
ConcreteA
item.getName().equals(“com.a.b.Utils$1”);
是通常的类,那就失败了
另外,如果我使用类名,我需要使用类似的东西:
addresses
在这种情况下如何检查实例?
答案 0 :(得分:1)
您需要检查类型是否兼容,即InterfaceA
是否为item
的超类型:
boolean isValidType = InterfaceA.class.isAssignableFrom(item)
API文档:https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)