欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java反射学习总结

程序员文章站 2022-05-17 19:39:12
我开始学习反射的初衷是为了理解Spring 里的控制反转,其次可以利用反射来达到类中的解耦。 自己写的一些心得,希望能帮到大家 1.反射指的是对象的反向处理操作,是根据对象来取得对象的来源信息。 反射的核心是:将类编译的字节码映射成对应的Java类型 首先要理解,任何一个类的对象都可以通过Objec ......

我开始学习反射的初衷是为了理解spring 里的控制反转,其次可以利用反射来达到类中的解耦。 自己写的一些心得,希望能帮到大家

1.反射指的是对象的反向处理操作,是根据对象来取得对象的来源信息。

反射的核心是:将类编译的字节码映射成对应的java类型

首先要理解,任何一个类的对象都可以通过object类中的getclass()方法取得class类对象

那么如何获取字节码呢?

  • 第一 使用 class.forname(); 

该方法返回的是一个class 对象,这个方法大家是否熟悉呢? 对的在你链接数据库的时候加载jdbc驱动的时候曾经用到过

  Java反射学习总结

  说好听点叫做获取jdbc 驱动,难听点叫做加载字节码。

  •    第二种: 使用已经现有的类.class 方法

Java反射学习总结

  • 第三种则使用继承object 类中的getclass 方法 此方法需要有一个现有的对象

 Java反射学习总结

 我们可以利用反射做一些什么呢?

第一:获取package

Java反射学习总结

 

第二:获取属性字段

Java反射学习总结

 

获取多个数据字段与获取单个数据字段,这里做一个拓展。如何访问并且修改已经设置为私有的属性呢?

user类

Java反射学习总结

 

我们可以看到其中的name属性是私有的 

test类

Java反射学习总结

 

第三:获取构造器()通过构造器创建对象

Java反射学习总结

                       通过构造器调用newinstance方法创建对象,注意此方法是可选列表,即可创建带参数或者不带参数的对象,

                          获取构造器的时候,传入构造器的参数为包装类型

第四:获取并且调用方法

user类Java反射学习总结

                                                       test类

  Java反射学习总结

         这是我这一段时间内学习反射的心得,在此也有一些话想要送给大家,知识是一个不断积累的过程,学习也如逆水行舟,可能在某一阶段,你并不明白你为什么要这么做,或者这么做的意义究竟是什么? 但是不要不做,慢慢的去积累下来。总有一天,良好的代码习惯以及重足的代码量,一定会在某一个项目,某一个demo中 体现出来,上面是我写的内容,如果有不足 欢迎大牛指正。 加入群 大家可以一起交流  q群:682677231