Java反射的概念

来源:互联网 发布:手机淘宝怎么申请开店 编辑:程序博客网 时间:2024/04/30 20:28
反射
1、概念:反射是说在程序运行期间, 对于一个类来说, 可以获取他的属性和方法, 对于一个对象来说, 可以调用他的成员属性和方法.
2、java的默认加载器有3个:
1).BootStrap Classloader: 根类加载器, 加载最基本的类, 比如lib中的rt.jar, 是最开始的加载器, 不是java语言写的
2).Extension Classloader: 扩展类加载器, 负责加载lib/ext中的扩展类
3).System Classloader: 系统类加载器, 负责加载java命令和classpath中的类类加载器有一个委托机制, 就是说一个类加载器如果需要加
载一个类, 他会先委托他的父类类加载器加载, 它的父类类加载器也会委托他的父类类加载器进行加载, 一直委托到根类加载器, 如果根类
加载器不能加载, 则会返回给下一层类加载器尝试加载,每层都尝试加载, 直到返回最初的那个类加载器, 如果最初的类加载器不能加载, 就会抛出ClassNotFoundException
3、每个类都是一个字节码对象, 获取了这个字节码对象就可以对其进行解剖, 获取其中信息获取字节码的方法有3种:
1).使用对象的getClass()方法
2).使用类的静态属性.class 
3).使用Class类的静态方法forName()参数为完整的类名获取了字节码对象后, 就获取了一个类的字节码对象, 通过该对象的方法可以对其进行操作获取信息想要获取

①这个类的对象, 可以使用Class类的getConstructors获取全部public的构造方法数组, 或者使用getConstructor指定参数列表类型, 
获取指定的public的构造方法然后通过Constructor类的newInstance传入参数获得这个类的对象想
②要获取这个类的方法, 
可以使用Class类的getMethods方法获得全部public的方法数组, 或者使用getMethod传入方法名和参数列表类型, 
获取指定public的方法然后可以通过Method类的invoke方法, 传入对象和参数调用该方法
③想要获取这个类的成员属性, 可以使用Class类的getFields获取全部public的属性数组, 或者使用getField传入属性名, 
获取指定的public的属性。然后可以通过Field类的set方法, 修改属性值如果想要获取非public的成员, 需要使用暴力访问, 
对于Constructor, Method和Field, 他们都有对应的getDeclaredXxx方法, 可以获取全部权限的方法, 
或者使用setAccessible(true)修改访问权限, 这样也可以使用set修改private的属性
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机网站被劫持怎么办 a37手机网站被劫持怎么办 耳朵被震的耳鸣怎么办 液晶电视怎么办断屏坏还是逻辑板 门保险拧坏了怎么办 锁的保险坏了怎么办 鞋子里面长霉了怎么办 塑料瓶盖滑丝了怎么办? 塑料杯盖滑丝了怎么办 洗衣机上的订子很难扭出来怎么办 滚筒洗衣机坏了打不开门怎么办 海尔滚筒洗衣机打不开门怎么办 格兰仕滚筒洗衣机门打不开怎么办? lg洗衣机洗完衣服门打不开怎么办 lg洗衣机不能冼衣服怎么办 vivo账户密码忘记了怎么办 oppo账户密码忘记了怎么办 74160从1开始计数怎么办 微信录音声音小怎么办 word文档已停止工作怎么办 怀孕30天不想要怎么办 一楼墙体起碱怎么办 农村平房顶四墙面渗水怎么办 被蝎子精蛰了怎么办 小娃头摔包要怎么办抹个什么 老人死了银行钱存死期怎么办 飙酷车神2一进画面就闪退怎么办 电脑开机键盘鼠标没反应怎么办 玩gta4自由城卡怎么办 gta5游戏服务当前不可用怎么办 健身后胳膊变粗怎么办 健身后手臂变粗怎么办 家猫见到我就跑怎么办 走路多了小腿酸痛怎么办 脚有脚气很痒怎么办 地板精油喷多了怎么办 史莱姆泥变硬了怎么办 dnf剑帝命中率低怎么办 无意中讲话伤害了人怎么办 高中上不下去了怎么办 高三坚持不下去怎么办