• Java反射


    一、何谓反射机制 

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

    二、反射机制如何实现

    首先得的是java.lang.Class这个类。

    Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。

    三、获取Class对象有三种方式: 

    1.通过Object类的getClass()方法。例如:

    Class c1 = new String("").getClass();

    2.通过Class类的静态方法——forName()来实现:

    Class c2 = Class.forName("MyObject");

    3.如果T是一个已定义的类型的话,在java中,它的.class文件名:T.class就代表了与其匹配的Class对象,例如:

    Class c3 = Manager.class;

     

    四、Class类中存在以下几个重要的方法: 

    1.getName()

    一个Class对象描述了一个特定类的特定属性,而这个方法就是返回String形式的该类的简要描述。由于历史原因,对数组的Class对象 

     

    2.newInstance()

    该方法可以根据某个Class对象产生其对应类的实例。需要强调的是,它调用的是此类的默认构造方法。例如:

    MyObject x = new MyObject();

    MyObject y = x.getClass().newInstance();

     

    3.getClassLoader()

    返回该Class对象对应的类的类加载器。

     

    4.getComponentType()

    该方法针对数组对象的Class对象,可以得到该数组的组成元素所对应对象的Class对象。例如:

    int[] ints = new int[]{1,2,3};

    Class class1 = ints.getClass();

    Class class2 = class1.getComponentType();

    而这里得到的class2对象所对应的就应该是int这个基本类型的Class对象。

     

    5.getSuperClass()

    返回某子类所对应的直接父类所对应的Class对象。

     

    6.isArray()

    判定此Class对象所对应的是否是一个数组对象。

    Class c4 = int.class;

    Class c5 = Double[].class;

     

    五、反射机制的优点与缺点 

    反射机制的优点  就是可以实现动态创建对象和编译,体现出很大的灵活性。 
    缺点  对性能有影响。

  • 相关阅读:
    redis运维手册
    grafana展示ES中的nginx日志-地图展示
    nginx针对yum安装nginx重编译
    K8S-yaml里初始化容器
    K8S-资源配置清单补充1
    K8S-资源配置清单详解
    Docker cp 提示“no space left on device”
    磁盘
    ansible 对文件内容的操作
    ansible 初始化系统分区格式化
  • 原文地址:https://www.cnblogs.com/Zhangmin123/p/5549892.html
Copyright © 2020-2023  润新知