假设我有一个像这样的父接口/类
interface Parent<T> {}
Run Code Online (Sandbox Code Playgroud)
以及一些修复泛型类型的实现接口.
interface Child extends Parent<Type> {}
Run Code Online (Sandbox Code Playgroud)
如果我有对象,我可以使用反射来获取Class表示的实例.像这样的东西:TClassChild
<T, I extends Parent<T>> I create(Class<I> type) {
Class<T> tType = ...
...
}
Run Code Online (Sandbox Code Playgroud)
目前我已tType作为参数传递,但如果可以,我想简化一些事情.
是的,尽管其他人已经说过,如果您可以访问子类的对象,则可以使用此信息Class.你需要getGenericSuperclass一起使用getActualTypeArguments.
ParameterizedType superClass = (ParameterizedType)childClass.getGenericSuperclass();
System.out.println(superClass.getActualTypeArguments()[0]);
Run Code Online (Sandbox Code Playgroud)
在您的示例中,"actual"类型参数应返回Classfor Type.