public class OtherTest {
@Test
public void test1(){
Class clazz=Person.class;
Constructor[] constructors=clazz.getConstructors();//获取当前运行类中声明为public的构造器
for(Constructor c:constructors){
System.out.println(c);
}
System.out.println();
//getDeclaredConstructors():获取当前运行时类中声明的所有的构造器
Constructor[] constructors1=clazz.getDeclaredConstructors();
for(Constructor c:constructors1){
System.out.println(c);
}
}
//获取运行时类的父类
@Test
public void test2(){
Class clazz=Person.class;
Class superClass=clazz.getSuperclass();
System.out.println(superClass.getSimpleName());//Creature
}
//获取运行时类带泛型的父类!
@Test
public void test3(){
Class clazz=Person.class;
Type genericSuperClass=clazz.getGenericSuperclass();
System.out.println(genericSuperClass.getTypeName());
}
//获取运行时类父类的泛型
@Test
public void test(){
Class clazz=Person.class;
Type genericSuperclass = clazz.getGenericSuperclass();
ParameterizedType parameterizedType=(ParameterizedType)genericSuperclass;
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
System.out.println(actualTypeArguments[0].getTypeName());
System.out.println(((Class)actualTypeArguments[0]).getSimpleName());
}
//获取运行时类实现的接口
@Test
public void test4(){
Class clazz=Person.class;
Class[] interfaces = clazz.getInterfaces();
for(Class in:interfaces){
System.out.println(in.getSimpleName());
}
System.out.println();
//获取运行时类父类所实现的接口(先要获取父类再调用getInterfaces()方法就能够得到父类所实现的接口!)
Class[] interfaces1 = clazz.getSuperclass().getInterfaces();
for(Class in1:interfaces1){
System.out.println(in1.getSimpleName());
}
}
//获取运行时类所在的包!
@Test
public void test5(){
Class clazz=Person.class;
Package aPackage = clazz.getPackage();
System.out.println(aPackage);
}
//获取运行时类声明的注解!
@Test
public void test6(){
Class clazz=Person.class;
Annotation[] annotations = clazz.getAnnotations();
for(Annotation annotation:annotations){
System.out.println(annotation);
}
}
}
反射的一些其他操作
最新推荐文章于 2024-06-18 19:49:01 发布