通常,这个问题不容易完全解决。例如,如果它是一个内部类,还必须考虑包含类的类型参数,…
因为仅使用Java本身提供的内容就很难对泛型类型进行反射,所以我编写了一个完成艰苦工作的库:gentyref。请访问http://pre.google.com/p/gentyref/
。例如,使用gentyref,您可以执行以下 *** 作:
Type myType = MyClass.class;// get the parameterized type, recursively resolving type parametersType baseType = GenericTypeReflector.getExactSuperType(myType, baseInterface.class);if (baseType instanceof Class<?>) { // raw class, type parameters not known // ...} else { ParameterizedType pbaseType = (ParameterizedType)baseType; assert pbaseType.getRawType() == baseInterface.class; // always true Type typeParameterForbaseInterface = pbaseType.getActualTypeArguments()[0]; System.out.println(typeParameterForbaseInterface);}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)