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

标签 java generics

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

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/

相关文章:

java - 如何确定泛型类型的类?

java - 泛型定义为子类+接口(interface)

Java 泛型在 ArgoUML 中使用模板参数建模?怎么运行的?

java - 如果启动了较新的实例,则终止程序的较旧实例

java - 服务内的((按钮) View )不起作用

java - Eclipse Mars 对 Java 的支持 - 构建路径设置

java - 从 JavaFX 应用程序写入/读取嵌套的 ObservableList

java - 在带有泛型参数的泛型方法中使用 Spring RestTemplate

c#泛型接口(interface)解决方案

java - 我可以创建特定类实例的 ArrayList 吗?