【发布时间】:2014-02-25 12:23:29
【问题描述】:
给定一个 Type 实例(可能是 Class 或 ParameterizedType),我需要获取该类实现的接口的特定 Type。如果没有泛型,这很容易,在 Class 实例上调用 getInterfaces() 即可。但是,即使实现的接口有自己的类型参数,这些参数可能依赖于或不依赖于原始类本身的类型参数,我也需要它来工作。
一些例子,当给定一个类时,函数应该返回 Iterable
class Foo implements Iterable<Integer> {}
但也必须在给定类的情况下返回 Iterable
class Bar<T> implements Iterable<T> {}
和一个代表 Bar
有没有一种简单的方法可以通过内置反射、第三方工具等来做到这一点?
澄清一下,这不仅需要使用通过文字检索的类型实例(Foo.class 等),还需要使用那些通过反射返回的可以包含应用类型参数的实例,例如通过方法反射返回的返回类型
static Bar<String> magic() { ... }
这将是一个引用原始 Bar 类和 String 类型参数的 ParameterizedType。
【问题讨论】:
标签: java generics reflection