/**
* 访问Class对应的类所包含的注释:getAnnotation();getDelaredAnnotation(); * 访问Class对应的类所包含的内部类:getDeclaredClasses() * 访问Class对应的类所包含的外部类getDeclaringClass() * 访问Class对应的类所继承的父类和实现的接口等: * getModifiers()返回此类或接口的所有修饰符 * Class[] getInterfaces() 返回该Class对象对应类所实现的全部接口 * getPackage();获取此类的包 * getName();以字符串形式返回此Class对象所表示的类的名称 * getSimpleName()以字符串形式返回此Class对象所表示类的简称 * getSuperclass()返回该Class所表示的类的超类对应的Class对象 */ReflectDemo.java
package com.pb.reflect.classinfo;/** * * @author Administrator * 1、包 * 2、注解 * 3、构造方法 * 4、方法 * 5、内部类 * */@SuppressWarnings(value="unchecked")@Deprecated public class ReflectDemo { //私有构造方法 private ReflectDemo(){ } //公有的带name参数的构造方法 public ReflectDemo(String name){ } public void info(){ } public void info(String str){ } class inner{ }}
TestReflectDemo.java
package com.pb.reflect.classinfo;import java.lang.annotation.Annotation;import java.lang.reflect.Constructor;import java.lang.reflect.Method;public class TestReflectDemo { public static void main(String[] args) { //下面的代码可以获取ReflectDemo的Class对象 Classclass1 = 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(); } }}