packagecom.pb.reflect.classinfo;importjava.lang.annotation.Annotation;importjava.lang.reflect.Constructor;importjava.lang.reflect.Method;public classTestReflectDemo {public static voidmain(String[] args) {//下面的代码可以获取ReflectDemo的Class对象
Class class1 = ReflectDemo.class;//获取ReflectDemo中全部的构造方法
Constructor[] constructor =class1.getDeclaredConstructors();
System.out.println("########ReflectDemo全部的构造方法########");for(Constructor constructor2 : constructor) {
System.out.println(constructor2.toString());
}//获取ReflectDemo的public构造方法
System.out.println("########ReflectDemo公共的构造方法########");
Constructor[] constructor1=class1.getConstructors();for(Constructor constructor2 : constructor1) {
System.out.println(constructor2.toString());
}//获取ReflectDemo的public 的方法
System.out.println("########ReflectDemo公共的方法########");
Method[] methods=class1.getDeclaredMethods();for(Method method : methods) {
System.out.println(method.toString());
}//获取对应类的指定方法,方法名、方法参数的类型,找到info方法,info带的参数类型是String
try{
System.out.println("########ReflectDemo带有String类型参数的info方法########");
Method method=class1.getMethod("info", String.class);
System.out.println(method.toString());
}catch(SecurityException e) {
e.printStackTrace();
}catch(NoSuchMethodException e) {//TODO Auto-generated catch block
e.printStackTrace();
}//获取ReflectDemo的全部注释
Annotation[] annotation=class1.getAnnotations();
System.out.println("########ReflectDemo所有的注释 信息#####");for(Annotation annotation2 : annotation) {
System.out.println(annotation.toString());
}//获取ReflectDemo的包信息
Package package1 =class1.getPackage();
System.out.println(package1.toString());//获取ReflectDemo的内部类
Class[] inners =class1.getDeclaredClasses();
System.out.println("########ReflectDemo所有的内部类#####");for(Class class2 : inners) {
System.out.println(class2.toString());
}try{
Class inclass= Class.forName("com.pb.reflect.classinfo.ReflectDemo$inner");//输出内部类的信息
System.out.println("########ReflectDemo所有的内部类的信息");
System.out.println("inclass对应类的外部类为:"+inclass.getDeclaringClass());
System.out.println("inclass对应类的包为:"+inclass.getPackage());
System.out.println("inclass对应类的父类为:"+inclass.getSuperclass());
System.out.println("inclass对应类的名称为:"+inclass.getName());
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}
}