【发布时间】:2018-06-22 20:28:05
【问题描述】:
我正在寻找某种方法来获取扩展某个类并推断某些泛型的所有类。
我知道使用Reflections 我可以获得所有扩展类的类
final Reflections reflections = new Reflections("path.to.package");
Set<Class<? extends ClassBase>> classes = reflections.getSubTypesOf(ClassBase.class);
但我不确定如何只获得那些使用某些泛型的人。这是我想要实现的示例
假设我有ClassBase<T>
public class ClassBase<T> {}
然后我有ClassA ClassB ClassC,它们都扩展ClassBase
public class ClassA extends ClassBase<Long> {}
public class ClassB extends ClassBase<Long> {}
public class ClassC extends ClassBase<Integer> {}
我如何只获得ClassA 和ClassB?我什至可以得到所有扩展 ClassBase 的类,然后过滤掉那些我不需要的类,只要我最终得到一个只包含那些扩展 ClassBase 并推断 <Long> 的类的集合泛型类型。
或者更好的是,我实际上想要一个Set<Class<ClassBase<Long>>> 而不仅仅是一个Set<Class<ClassBase>>,它只包含那些推断Long 为通用的
【问题讨论】: