zoukankan      html  css  js  c++  java
  • 反射

    一、类的加载

      当程序要使用某个类时,如果该类还未加载到内存中,则系统会通过加载连接初始化三步来实现对该类进行初始化。

      1、加载

        将class文件读入内存,并为之创建一个class对象。任何类使用时系统都会创建一个class对象。

      2、连接

        验证:是否有正确的内部结构,并和其他类协调一致

        准备:负责为类的静态成员分配内存,并设置默认初始化值

        解析:将类的二进制数据中的符号引用替换为直接引用

      3、初始化

        new创建对象时的初始化过程

    二、类初始化时机

      1、创建类的实例

      2、类的静态变量,或者为静态变量赋值

      3、类的静态方法

      4、使用反射方式来强制创建某个类或者接口对应的java.lang.Class对象

      5、初始化某个类的子类

      6、直接使用java.exe命令来运行某个主类

    三、类加载器

      将.class文件加载到内存中,并为之创建class文件对象

    四、类加载器的组成

      1、Bootstrap ClassLoader 根类加载器

        也被称为引导类加载器,负责java核心类的加载

        比如System、String等,在JDK中JRE的lib目录下rt.jar文件中

      2、Extension ClassLoader 扩展类加载器

        负责JRE的扩展目录中的jar包的加载,在JDK中JRE的lib目录下的ext目录

      3、System ClassLoader 系统类加载器

        负责Jvm启动时加载来自java命令的class文件,一集classpath环境变量所指定的jar包和路径

    五、Class类

      获取class对象的三种方式:

      1、Object类的getClass()方法

      2、通过  类名.class  获得

      3、通过Class类的静态方法forName(String className)(注:className必须是全类名)

    六、反射通过配置文件运行的步骤

      运行的类名和方法名,以键值对的形式,写在文本中

      运行哪个类,读取配置文件即可

      实现步骤:

        1、准备配置文件,键值对

        2、IO流读取配置文件 Reader

        3、文件中的键值对存储到集合中 Properties

          集合保存的键值对,就是类名和方法名

        4、反射获取指定类的class文件对象

        5、class文件对象,获取指定的方法(getMethod())

        6、运行指定方法(invoke())

     public static void main(String[] args) throws Exception{
            //IO流读取配置文件
            FileReader fr = new FileReader("config.properties");
            //创建集合对象
            Properties prop = new Properties();
            //传递流对象
            prop.load(fr);
            //关闭流
            fr.close();
            //通过键获取值
            String className = prop.getProperty("className");
            String methodName = prop.getProperty("methodName");
            //通过反射获取指定类的class对象
            Class clazz = Class.forName(className);
            //获取指定的方法名
            Method method = clazz.getMethod(methodName,null);
            //调用方法
            method.invoke(method,null);
        }
  • 相关阅读:
    《Linux权威指南》阅读笔记(3)
    adb命令篇 (转载)
    3.抓包神器Fiddler简介(转载)
    python-文件基本操作(一) (转载)
    python+requests实现接口测试
    python+requests实现接口测试
    12306登录爬虫 cookies版本
    爬虫3 requests之json 把json数据转化为字典
    爬虫3 requests基础之下载图片用content(二进制内容)
    爬虫3 requests基础之 乱码编码问题
  • 原文地址:https://www.cnblogs.com/a591378955/p/8017293.html
Copyright © 2011-2022 走看看