• java反射


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

    要想解剖一个类,必须先要获取到该类的字节码文件对象,然后获取到字节码文件对应的Class类型的对象。

    Class对象的由来是将class文件读入内存,并为之创建一个Class对象。在运行期间,一个类,只会有一个Class对象产生

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

    1 Object ——> getClass();  a.getClass()

    2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性  A.class

    3 通过Class类的静态方法:forName(String  className)(常用)   Class.forName("path.A");

    通过反射获取构造方法并使用:

    1.获取构造方法:
    * 1).批量的方法:
    * public Constructor[] getConstructors():所有"公有的"构造方法
    public Constructor[] getDeclaredConstructors():获取所有的构造方法(包括私有、受保护、默认、公有)

    * 2).获取单个的方法,并调用:
    * public Constructor getConstructor(Class... parameterTypes):获取单个的"公有的"构造方法:
    * public Constructor getDeclaredConstructor(Class... parameterTypes):获取"某个构造方法"可以是私有的,或受保护、默认、公有;
    *
    * 调用构造方法:
    * Constructor-->newInstance(Object... initargs)


    * 获取成员变量并调用:
    *
    * 1.批量的
    * 1).Field[] getFields():获取所有的"公有字段"
    * 2).Field[] getDeclaredFields():获取所有字段,包括:私有、受保护、默认、公有;
    * 2.获取单个的:
    * 1).public Field getField(String fieldName):获取某个"公有的"字段;
    * 2).public Field getDeclaredField(String fieldName):获取某个字段(可以是私有的)
    *
    * 设置字段的值:
    * Field --> public void set(Object obj,Object value):
    * 参数说明:
    * 1.obj:要设置的字段所在的对象;
    * 2.value:要为字段设置的值;


    * 获取成员方法并调用:
    *
    * 1.批量的:
    * public Method[] getMethods():获取所有"公有方法";(包含了父类的方法也包含Object类)
    * public Method[] getDeclaredMethods():获取所有的成员方法,包括私有的(不包括继承的)
    * 2.获取单个的:
    * public Method getMethod(String name,Class<?>... parameterTypes):
    * 参数:
    * name : 方法名;
    * Class ... : 形参的Class类型对象
    * public Method getDeclaredMethod(String name,Class<?>... parameterTypes)
    *
    * 调用方法:
    * Method --> public Object invoke(Object obj,Object... args):
    * 参数说明:
    * obj : 要调用方法的对象;
    * args:调用方式时所传递的实参;

    反射方法的其它使用之---通过反射运行配置文件内容

    反射方法的其它使用之---通过反射越过泛型检查

  • 相关阅读:
    [RxJS] defer() lazy evaluation
    [React] as component prop
    [Compose] Compose exercises
    MAC开发NDK非常的简单
    Android之zip包换肤(极力推荐)
    Android之获取sdcard卡的信息
    Android之Volley使用
    Android之与当前连接的wifi进行文件夹的浏览与传输
    android之获得当前连接wifi的名字
    android之截屏(包括截取scrollview与listview的)
  • 原文地址:https://www.cnblogs.com/one-apple-pie/p/10850513.html
Copyright © 2020-2023  润新知