Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息,
并能直接操作任意对象的内部属性及方法
在Object类中定义了以下的方法,此方法将被所有子类继承:
● public final ClassgetClass()
以上的方法返回值的类型是一个Class类,此类是Java反射的源头,实际上所谓反射从程序的运行结果来看也很好理解,
即:可以通过对象反射求出类的名称。
Class类的常用方法
实例化Class类对象(四种方法)
1)前提:若已知具体的类,通过类的class属性获取,该方法
最为安全可靠,程序性能最高
实例:Classclazz =String.class;
2)前提:已知某个类的实例,调用该实例的getClass()方法获
取Class对象
实例:Classclazz =“www.atguigu.com”.getClass();
3)前提:已知一个类的全类名,且该类在类路径下,可通过
Class类的静态方法forName()获取,可能抛出ClassNotFoundException
实例:Classclazz=Class.forName(“java.lang.String”);
4)其他方式(不做要求)
ClassLoader cl =this.getClass().getClassLoader();
Classclazz4 =cl.loadClass(“类的全类名”);
类的加载过程
当程序主动使用某个类时,如果该类还未被加载到内存中,
则系统会通过如下三个步骤来对该类进行初始化。
4)其他方式(不做要求)