反射基础详解

反射

1、什么是反射?

    Java中的一种机制!

作用:* 通过反射可以动态的实例化对象,动态的读写属性,动态的调用方法*

2、▲类对象
一句话:一切反射相关的代码都是由“类对象”开始的,即获取Class

牵扯一个问题——>怎么获得类对象?
三种:获取类对象(Class c)
    2.1 Class.forName(“对应类的全路径名”);
        Class c = Class.forName("com.entity.Person");

    2.2 类名.class
        Class c = Person.class

    2.3 对象.getClass()
        Person person = new Person();
        Class c = Person.getClass();

注:同一个类的类对象只能创建一个

3、▲三大作用 (以下 c 皆为获取的类对象)

3.1 动态实例化对象
这里写图片描述

3.2 动态调用方法
这里写图片描述

3.3 动态读写属性

Class c = Class.forName(path);   //path是对应类的全路径名
c.getField(String)      //返回某个公开的属性
c.getDeclaredFields()       //返回所有属性(任意访问权限,得到一个Field数组)
Field field = c.getDeclaredField(String)    //返回指定私有化属性
//如果给此属性赋值,因为私有化的,要设置权限
field.setAccessible(true);
field.set(Object, value);   
//object要与类对象对应的类,也可以通过类对象动态实例化,例如c.new Instance();
//value是对这个属性赋的值
4、访问修饰符
//先获取类对象 c ,再获得所有或者单个属性或方法
//例如:
Field field = c.getDeclaredField("uid");
int result = field.getModifiers());     //获取修饰符对应值
//通过Modifier的toString方法
Modifier m = new Modifier();
String m.toString(result);  //获取修饰符
修饰符             对应值
默认友好的           0
    Public          1
    private         2
    protected       4
    ----------------------------
    static          8
    final           16
    ----------------------------
    synchronized:       32
    volatile:           64
    transient:          128
    native:             256
    interface:          512
    abstract:           1024
    strict:             2048
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值