1.有三个类
TestClass (Main 方法所在类)
TempClass (测试用的类)
TempClass$InnerClass (测试用 TempClass 的内部类)
2.三个类的代码如下
1 | public class TestClass { |
1 | public class TempClass { |
3.实现过程
首先,获取 TempClass 的内部类 InnerClass
1 | Class<?>[] classes = TempClass.class.getDeclaringClass(); |
API 简介(Class):
getClasses() :获取该类的 public 内部类
getDeclaredClasses() :获取该类的所有内部类
然后,获取这个内部类所实现的接口
1 | Type[] types = innerClass.getGenericInterfaces(); |
API 简介(Class):
getGenericSuperclass() :获取该类 Type 类型的父类
getGenericInterfaces() :获取该类所实现的 Type 类型的接口数组
之后,强转为 ParameterizedType 类型,调用其中的 getActualTypeArguments() 方法,该方法也是返回一个 Type 类型的数组,分别存储的是具体的运行时泛型类型。这里取第一个,强转为 Class 就是实际的值了。
最后,全部代码放上
1 | public static void main(String[] args) { |
运行结果