获取其他结构
总结于尚硅谷学习视频
OtherTest 类
package com.day0324_2; import com.day0324_1.Person; import org.junit.jupiter.api.Test; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class OtherTest { /* 获取构造器 */ @Test public void test1(){ Class clazz= Person.class; //获取当前运行时类中声明为public的构造器 Constructor[] constructors = clazz.getConstructors(); for (Constructor c : constructors) { System.out.println(c); } System.out.println(); //获取当前运行时类中所有的构造器 Constructor[] declaredConstructors = clazz.getDeclaredConstructors(); for (Constructor c : declaredConstructors) { System.out.println(c); } } /* 获取当前运行时类的父类 */ @Test public void test2(){ Class clazz=Person.class; Class superclass = clazz.getSuperclass(); System.out.println(superclass); } /* 获取当前运行时类的带泛型的父类 */ @Test public void test3(){ Class clazz=Person.class; Type genericSuperclass = clazz.getGenericSuperclass(); System.out.println(genericSuperclass); } /* 获取当前运行时类的带泛型的父类的泛型 代码: 逻辑代码 VS 功能代码 */ @Test public void test4(){ Class clazz=Person.class; Type genericSuperclass = clazz.getGenericSuperclass(); ParameterizedType paramType= (ParameterizedType) genericSuperclass; //获取泛型类型 Type[] actualTypeArguments = paramType.getActualTypeArguments(); // System.out.println(actualTypeArguments[0].getTypeName()); System.out.println(((Class)actualTypeArguments[0]).getName()); } /* 获取运行时类实现的接口 */ @Test public void test5(){ Class clazz=Person.class; Class[] interfaces = clazz.getInterfaces(); for (Class c : interfaces) { System.out.println(c); } System.out.println(); //获取运行时类的父类的接口 Class[] interfaces1 = clazz.getSuperclass().getInterfaces(); for (Class c : interfaces1) { System.out.println(c); } } /* 获取运行时类所在的包 */ @Test public void test6(){ Class clazz=Person.class; Package pack = clazz.getPackage(); System.out.println(pack); } /* 获取运行时类声明的注解 */ @Test public void test7(){ Class clazz=Person.class; Annotation[] annotations = clazz.getAnnotations(); for (Annotation annos: annotations) { System.out.println(annos); } } }