public class Children extends Parent<String> implements IParent<Long> {
private static final Logger log = LoggerFactory.getLogger(Children.class);
public static void main(String[] args) {
Type genericSuperclass = Children.class.getGenericSuperclass();
if (genericSuperclass instanceof ParameterizedType) {
Type[] actualTypeArguments = ((ParameterizedType) genericSuperclass).getActualTypeArguments();
for (Type actualTypeArgument : actualTypeArguments) {
log.info("父类ParameterizedType.getActualTypeArguments:" + actualTypeArgument);
}
}
/**
* 这里获取父接口中的泛型参数
*/
Type[] genericInterfacesTypes = Children.class.getGenericInterfaces();
for (Type interfaceType : genericInterfacesTypes) {
if (interfaceType instanceof ParameterizedType) {
Type[] actualTypeArguments = ((ParameterizedType) interfaceType)
.getActualTypeArguments();
for (Type argumentType : actualTypeArguments) {
log.info("父接口ParameterizedType.getActualTypeArguments:" + argumentType);
}
}
}
// log.info("----------------");
System.out.println("=================================================");
ResolvableType superResolvableType = ResolvableType.forClass(Children.class).getSuperType();
log.info("supper:" + superResolvableType.resolveGenerics()[0]);
ResolvableType superInterfaceResolvableType = ResolvableType.forClass(Children.class).getInterfaces()[0];
log.info("supper:" + superInterfaceResolvableType.resolveGenerics()[0]);
}
}
结果
=================================================
[main] INFO com.yu.api.useless.Children - 父类ParameterizedType.getActualTypeArguments:class java.lang.String
[main] INFO com.yu.api.useless.Children - 父接口ParameterizedType.getActualTypeArguments:class java.lang.Long
[main] INFO com.yu.api.useless.Children - supper:class java.lang.String
[main] INFO com.yu.api.useless.Children - supper:class java.lang.Long