• 反射


    反射
    类初始化的时机
    所谓的类的出事后,就是讲我们程序员写的java文件编译后的class文件加载到内存中,并未该该class文件生成一个对应的对象,这个过程就是类的初始化;
    每个class文件在内存中有且仅有一份由java虚拟机负责创建,程序员只能获取使用,无法手动创建
    1、直接使用类的静态成员变量或成员方法;
    2、创建一个类的对象;(new)
    3、创建一个类的子类对象的时候,父类也会加载
    4、使用反射的技术直接强制加载某个类。
    5、使用java.exe直接运行一个.class文件时,也会加载者类

    反射概述:
    Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任一方法和属性
    这种动态获取信息

    获取类的文件字节码对象仅有一份,由java虚拟机负责创建,程序员只能获取使用,无法手动创建;
    方式1:
    格式:Class 变量名 = 数据类型.class;
    方式2:
    格式:任意Object;类型的对象.getClass();
    方式3:
    格式:Class.forName("类的全路径名");
    反射构造方法:
    反射使用步骤:
    1、获取字节码文件对象,
    2、面向字节码文件对象获取想要的内容(构造,成员方法和属性等)
    3、面向获取的内容,直接让获取的内容执行即可。
    Class类的关于反射构造方法的方法:
    Constructor
    当一个类总拥有public权限的空参数的构造方法时,可以直接使用字节码文件对象直接创建对象newInstance
    反射私有构造方法--暴力反射(了解)
    所有的暴力反射与普通反射之间的方法名中,多了一个Declared单词,反射之后,执行之前,需要忽略权限检查;
    setAccessible(boolean),只能传true,忽略权限检查
    反射成员方法:
    java将反射出来的方法对象,使用Method类来表示
    反射成员变量:
    由于实际开发,成员变量一般私有,通常通过get和set方法来操作,如果想直接操作属性需要使用暴力反射;

    BeanUtils工具类的使用BeanUtils是Apache编写的一套用于数据封装的java工具类;
    能将不同数据类型的值封装到指定的java对象中;
    可以自动将String类型的数据类型转换成基本数据类型,string数组类型;

  • 相关阅读:
    构造函数以及四种方法的调用
    函数声明与函数表达式的区别
    display:inline-block,block,inline的区别与用法
    SASS 使用(vs code)
    SASS 使用(安装)
    vue 学习笔记1 入门
    ES6学习5 字符串的扩展
    ES6学习4 变量的解构赋值
    es6 学习2 模板字符
    es6 学习1 let表示变量 、const表示常量 与 var 变量的区别
  • 原文地址:https://www.cnblogs.com/dubin382460/p/7582696.html
Copyright © 2020-2023  润新知