检查参数化类型是否为特定类型实例

时间:2016-06-30 09:04:09

标签: java generics

我有一个带模板参数的方法:

public CustomClass getData(Class<? extends InterfaceA> item) {  

} 

我最后得到一个案例,可以使用item来调用它,它可以是一个符合预期类的内部匿名类,但是如果我在方法中得到这个对象怎么知道呢?登记/> 如果我if(item.equals(ConcreteA.class)) ConcreteA item.getName().equals(“com.a.b.Utils$1”);是通常的类,那就失败了 另外,如果我使用类名,我需要使用类似的东西:
addresses

在这种情况下如何检查实例?

1 个答案:

答案 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)