我有一个班级BaseClass<X, Y, Z>
。我将该类实现为SuperCar implements BaseClass<Color, Engine, Foo>
。所以现在我需要通过使用SuperCar
类的反射来获得那些X,Y,Z值。这可能吗?
答案 0 :(得分:1)
您可以检查超类的类型参数,Class
的{{1}}:
SuperCar
这应该给你:
SuperCar car = new SuperCar();
ParameterizedType parameterizedType = (ParameterizedType) car.getClass().getGenericSuperclass();
Type[] superClassTypes = parameterizedType.getActualTypeArguments();
for (Type type : superClassTypes) {
System.out.println(type.getTypeName());
}
答案 1 :(得分:1)
我想你想要这样的东西:
ParameterizedType types = (ParameterizedType) SuperCar.class.getGenericInterfaces()[0];
for (Type type : types.getActualTypeArguments()) {
Class<?> cl = (Class<?>) type;
System.out.println(cl.getName());
}
而不是打印名称,你可以随心所欲地做任何事情