Cheug's Blog

当前位置:网站首页 / JAVA / 正文

反射

2019-04-24 / JAVA / 958 次围观 / 0 次吐槽 /

反射概述

JAVA反射机制是在运行状态中,对于任意一个类都能够知道这个类的所有属性和方法;

对于任意一个对象,都能通过反射够调用它的任意一个方法和属性

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

 

获取字节码对象三种方式

Object类的getClass()方法,判断两个对象是否是同一个字节码文件

静态属性class,锁对象

Class类中静态方法forName()

        image.png

案例读取配置文件创建字节码对象

        image.png

通过反射获取参构造方法

            使用要点:

             1.如果要使用反射,先要获取字节码对象

             2.通过字节码对象的getConstructor()可以获取到构造方法对象

             3.构造方法对象(Contructor),有个newInstance方法创建这个字节码对象

             4.反射是在java.lang.reflect这个包中

             5.反射的作用一般是用于写框架(ssh,ssm)

            代码:

        image.png

通过反射获取类属性

            使用要点

            1.ClassgetField(String)方法可以获取类中的指定字段(可见的),

            2.如果是私有的,可以用getDeclaedField("name")方法获取

            3.通过set(obj, "李四")方法可以设置指定对象上该字段的值

            4.如果是私有的需要先调用setAccessible(true)设置访问权限,

            5.调用get(obj)可以获取指定对象中该字段的值

            代码

        image.png

通过反射获取方法并使用

            使用要点

            1.反射中通过Method类描述方法【构造方法:Contructor,字段:Field

            2.通过ClassgetMethod可以获取一个方法

            3.通过getDeclaredMethod可以获取私有方法

            4.如果要调用私有方法,设置访问权限setAccessible

            代码

        image.png

案例越过泛型的检查

    image.png

写一个通用的方法,设置对象的属性值

        image.png

Powered By Cheug's Blog

Copyright Cheug Rights Reserved.