java反射最佳实践_Java 反射简析

一直以来,多少Java编程人员对于Java的反射讳莫如深,其实简单粗暴的说,所谓反射就是文件与Java对象之间的转换而已。

我们编写的Java后缀的文件,经过编译之后就成为class后缀的文件了,jvm对其进行登记。

反射的时候,jvm按照花名册,加载所有相关的class文件。这时候,文件里面就是代码,就是对象。

加载之后呢,按照Java规则,将其还原为我们熟悉的Java文件,这时候这个class文件就从编译状态变成了编程状态。

实际反射的根本就是文件io。在这个基础之上,必须理解的是,Java的一切皆是面向对象,连基本数据类型都有对象包装类。

1.获得一个类的类模版

Class c =对象名.getClass();

Class c = Class.forName(包名+类名);  ---常用

我们也可以根据模版来获取其对应的类对象:c.newInstance();

上面就是从jvm加载的花名册里面获取到class文件,然后调用面向对象的方法,生成对象,class就是编译后的class文件对应的对象类型。

重点:Class是一个对象。

2.根据类模版获取类的信息:

获取类的属性:

Filed类----c.getFiled(String pname)获得指定属性(公共字段)

Filed类----c.getDeclearedFiled(String pname)获得指定属性(所有权限字段)

Filed[]----c.getFileds()获得所有属性(公共字段)

Filed[]----c.getDeclearedFileds()获得所有属性(所有权限字段)

上面是基于对象获取属性与字段。

重点:属性本身也是一个对象。

获取类的方法:

Method类----c.getMethod(String methodName,class[] params)获得指定方法(公共方法)

Method类----c.getDeclearedMethod(String methodName,class[] params)获得指定方法(所有方法)

Method[]----c.getMethods()获得所有方法(公共方法)

Method[]----c.getDeclearedMethods()获得所有方法(所有权限方法)

获取类的方法,一样是基于对象操作;

重点:方法本身也是对象。

所以,必须深刻的理解Java的面向对象的彻底与干脆。

所以反射的本质,就是从Java格式的对象文件到编译的class文件,然后从编译的class文件到可编程的Java文件,我们看得懂的对象文件。编译的过程就是文件重写,从一直规则到另一种规则。反射的时候,就是通过IO进行反向规则还原写。还原的过程,一切都是从文件到对象的过程。理解类是对象,属性是对象,方法是对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值