Class clazz =Person.class
Constructor cons = clazz.getConstructor(String.class,int.class);
Object obj = cons.newInstance("Tom",12);
Person p = (Person) obj;
通过反射,调用对象指定的属性方法
调用属性
Field age = clazz.getDeclaredField("age");
调用方法
clazz.getDeclaredMethod("show");
show.invole(p);
动态性
浏览器访问后台时 使用反射
java.lang.Class类的理解
1.类的加载过程
程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾),接着我们使用java.exe命令对某个字节码文件进行解释运行
相当于将某个字节码文件加载到内存中。此过程就称为类的加载。加载到内存中的类。我们就称为运行时类,此运行时类,就作为Class的一个实例
2.换句话说,Class的实例就对应着一个运行时的类
获取Class的实例的方式
方式一:调用运行时类的属性.class
方式二:通过运行时类的对象,调用getClass()
方式三: 调用Class静态方法forName(String classPath)
方式四:调用类的加载器 ClassLoader
3.加载到内存中的运行时类,会缓存一定的时间。在此时间之内,我们可以通过不同的方式来获取此运行时类