packagereflection2;importjava.lang.reflect.Constructor;importjava.lang.reflect.ParameterizedType;importjava.lang.reflect.Type;importorg.junit.jupiter.api.Test;importorg.junit.jupiter.params.ParameterizedTest;importreflection1.Person;public classOtherTest {/** 获取构造器结构
**/@Testpublic voidtest1() {
Class clazz= Person.class;
Constructor[] constructors=clazz.getConstructors();for(Constructor c:constructors)
System.out.println(c);
System.out.println();
constructors=clazz.getDeclaredConstructors();for(Constructor c:constructors)
System.out.println(c);
}/** 获取运行时类的父类
**/@Testpublic voidtest2() {
Class clazz= Person.class;
Class superClass=clazz.getSuperclass();
System.out.println(superClass);
}/** 获取运行时带泛型的父类
**/@Testpublic voidtest3() {
Class clazz= Person.class;
Type superClass=clazz.getGenericSuperclass();
System.out.println(superClass);
}/** 获取运行时带泛型的父类的泛型
**/@Testpublic voidtest4() {
Class clazz= Person.class;
Type superClass=clazz.getGenericSuperclass();
ParameterizedType paramType=(ParameterizedType)superClass;//获取泛型类型
Type[] types =paramType.getActualTypeArguments();
System.out.println(types[0].getTypeName());
}/** 获取运行时类的接口
**/@Testpublic voidtest5() {
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);
}/** 获取类运行时所在包
**/@Testpublic voidtest6() {
Class clazz= Person.class;
Package package1=clazz.getPackage();
System.out.println(package1);
}
}