2020_07_05 学习日记 Java 反射

今早详情:

      阅读公司源码读不下去卡在了,Spring上面,然后Spring的话打算去看自己买的课,再然后那门课我在 timetable 这个小练手的5.0版本还没大致看完,打算看一看然后就看后面讲的Spring。

        一、看到里面多次出现反射这一机制,于是去廖雪峰大大的博客看了看,以前以为反射是什么高大上的东西,学习后发现原来也就是这么回事。

        简单描述一下就是,获取对应的 Class 实例,然后可以 Instance ,也可以根据获得实例获取其各种信息,甚至访问权限修饰符这种东西也能拿到。

访问字段:

  1.   Java的反射API提供的Field类封装了字段的所有信息:
  2.   通过Class实例的方法可以获取Field实例:getField(),getFields(),getDeclaredField(),getDeclaredFields();
  3.   通过Field实例可以获取字段信息:getName(),getType(),getModifiers();
  4.   通过Field实例可以读取或设置某个对象的字段,如果存在访问限制,要首先调用setAccessible(true)来访问非public字段。
  5.   通过反射读写字段是一种非常规方法,它会破坏对象的封装。

调用方法:

  1. Java的反射API提供的Method对象封装了方法的所有信息:
  2. 通过Class实例的方法可以获取Method实例:getMethod(),getMethods(),getDeclaredMethod(),getDeclaredMethods();
  3. 通过Method实例可以获取方法信息:getName(),getReturnType(),getParameterTypes(),getModifiers();
  4. 通过Method实例可以调用某个对象的方法:Object invoke(Object instance, Object... parameters);
  5. 通过设置setAccessible(true)来访问非public方法;
  6. 通过反射调用方法时,仍然遵循多态原则。

动态代理:

        所谓动态代理其实本质上就是JDK帮我们自动编写了一个实现类(不需要源码,可以直接生成字节码),并不存在可以直接实例化接口的黑魔法。       —— 廖雪峰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值