package com.atguigu.java3;import com.atguigu.java2.Person;import org.junit.Test;import java.lang.annotation.Annotation;import java.lang.reflect.Constructor;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;/** * @author Dxkstart * @create 2021-06-07 19:24 */public class OtherTest { /* 获取构造器结构 */ @Test public void test1() { Class<Person> clazz = Person.class; //getConstructors():获取当前运行时类中声明为public的构造器 Constructor[] constructors = clazz.getConstructors(); for (Constructor cons : constructors) { System.out.println(cons); } System.out.println(); //getDeclaredConstructors():获取当前运行时类中声明的所有构造器 Constructor[] declaredConstructors = clazz.getDeclaredConstructors(); for (Constructor c : declaredConstructors) { System.out.println(c); } } /* 获取运行时类的父类 */ @Test public void test2() { Class<Person> clazz = Person.class; Class superclass = clazz.getSuperclass(); System.out.println(superclass); } /* 获取运行时类的带泛型的父类 */ @Test public void test3() { Class<Person> clazz = Person.class; Type genericSuperclass = clazz.getGenericSuperclass(); System.out.println(genericSuperclass); } /* 获取运行时类的带泛型的父类的泛型 */ @Test public void test4() { Class<Person> clazz = Person.class; Type genericSuperclass = clazz.getGenericSuperclass(); ParameterizedType paramType = (ParameterizedType) genericSuperclass; //获取泛型类型 Type[] actualTypeArguments = paramType.getActualTypeArguments(); System.out.println(actualTypeArguments[0].getTypeName()); } /* 获取运行时类实现的接口 */ @Test public void test5(){ Class<Person> 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 c1: interfaces1){ System.out.println(c1); } } /* 获取运行时类所在的包 */ @Test public void test6(){ Class<Person> clazz = Person.class; Package pack = clazz.getPackage(); System.out.println(pack); } /* 获取运行时类声明的注解 */ @Test public void test7(){ Class<Person> clazz = Person.class; Annotation[] annotations = clazz.getAnnotations(); for(Annotation a:annotations){ System.out.println(a); } }}