java - 检查 Type 实例是否等于泛型类型

标签 java generics reflection

我需要实现一个具有与此类似的方法的 Java 接口(interface):

boolean canWrite(Type t);

就我而言,它应该返回 true如果类型是List<URI> .

我想做类似 return t.equals(URI_LIST_TYPE) 的事情,但我不知道如何获取 Type 的实例代表List<URI> .

有什么好的方法吗?

最佳答案

您需要一个类型 token ,例如the one in Guava像这样使用

new TypeToken<List<String>>() {}

这是有效的,因为(匿名)子类在运行时保留有关类型参数的信息,然后可由反射库检查。

作为侧节点,在设计处理反射的 API 时,不要使用 Class<E>如果参数化类型可以发挥作用,则作为输入参数

关于java - 检查 Type 实例是否等于泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769612/

相关文章:

java - 如何在 GSON 反序列化期间忽略空字符串

java - 如何在不使用 hibernate 拦截器从数据库中获取的情况下获取previouseState来创建审计跟踪表?

java - 在工厂中使用反射

java - 代码在 Eclipse 中有效,但在命令行中无效

java - 检查 HTTP 图像路径是否有效

java - 避免在循环中实例化对象 - SONAR 合规性

C#:重载具有不同类型参数的 LINQ 泛型方法

javascript - 使用 JSDoc 注释通用 ES6 类

c# - 你如何将一个扁平的点状属性列表转换为一个构造的对象?

java - 如何使用 Guava 从任何方法获取返回类型?