java 反射机制 框架_如何理解java中的反射机制,为什么利用反射可以写开源框架?(1)...

当诸君在使用idea或者eclipse/vscode等代码编辑器时,有没有想过当你在字符串后面或者一个类实例后输入.的时候

后面跟随出来的字符串方法以及类内方法调用是怎样给出提示的?

The answer is 反射.

反射的具体介绍

程序可以访问,检测和修改它本身状态或行为的能力,即自描述和自控制.

可以在运行时加载,探知和使用编译期间完全未知的类.

给Java插上动态语言特性的翅膀,弥补强类型语言的不足.

java.lang.reflect包,在Java2时代就有,在Java5得到改善.

反射存在的意义

在运行中分析类的能力

在运行中查看和操作对象

基于反射自由创建对象

反射构建出无法直接访问的类

set或者get到无法访问的成员变量

调用不可访问的方法

3.实现通用的数组操作代码

4.类似函数指针的功能

首先,创建一个对象有4种方法:

1. new出来

2. clone一个 (类实现Cloneable以备克隆)

3. 序列化读取对象 readObject

4. 反射 newInstance

反射还可以调用到类中的成员变量和成员方法

get方法中含有Declared的一般是调用类本身内的以及私有的(变量,方法)

d562192e0b37f61313212832b7b118b9.png

在SomeClassC中,这个序列化可以很明白的理解序列化的意义了,不过序列化要在将来的JDK版本被移除.

218496bbd15815b37d682bd18f67e77e.png

这个类没有什么特殊性,就是一个clone,clone一个对象,两个对象一样,但是内存地址不同.类似复制一个桌面文件,文件内容一样,但是文件名(内存地址)不能重复放到一个磁盘.

4de83d3e61301dacbb8243a8ae218806.png

最有趣的是调用方法,这里可以看到调用本类的f1方法进行输出打印,调用了String类里面的hashCode以及toString方法进行字符串的hashCode计算以及字符串的toString输出.

github

原文:https://www.cnblogs.com/ukzq/p/12515319.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值