java 反射

来源:互联网 发布:淘宝详情页怎么制作 编辑:程序博客网 时间:2024/06/05 04:49

1.类装载器ClassLoader

      JVM在运行时中有三个ClassLoader:根装载器,ExtClassLoader和AppClassLoader。
    三个装载器有不同的作用:
    根装载器:有C++编写,负责装载JRE的核心类库;
    ExtClassLoader:负责装载JRE扩展目录ext的类库;
    AppClassLoader:负责装载Classpath下的路径(应用使用);
    其中根加载器是ExtClassLoader的父加载器,ExtClassLoaderAppClassLoader的父加载器。
   

      类装载器装载class的步骤:
    1.1 装载class
           1.1.1 查找class文件
           1.1.2 把class文件导入
    1.2 链接
           这一步主要是执行校验,分配静态变量的存储空间和解析
    1.3 初始化
           如果类中有静态变量或静态代码块,则执行初始化
    JVM装载类时,使用“全盘负责委托机制”,“全盘委托”是指一个ClassLoader负责加载一个类及其引用的所有类;
“委托机制”是指先委托父加载器寻找目标类,如果找不到,则从自己的类路径中查找并加载类。

2.java 反射

    通过java的反射机制可以获取Class对象中的构造函数,成员变量,方法等类元素,并操作相应的class对象。
    反射API在java.reflect包,其中最常用,也是最主要的有4个:
     
           Class类:代表一个类;
           Constructor类:类的构造方法;
           Method类:类的方法;
           Field类:类的成员变量(属性 );
Class类:代表一个类。
Field 类:代表类的成员变量(成员变量也称为类的属性)。
Method类:代表类的方法。
Constructor 类:代表类的构造方法。
           

0 0