Java反射学习总结
我开始学习反射的初衷是为了理解Spring 里的控制反转,其次可以利用反射来达到类中的解耦。 自己写的一些心得,希望能帮到大家
1.反射指的是对象的反向处理操作,是根据对象来取得对象的来源信息。
反射的核心是:将类编译的字节码映射成对应的Java类型
首先要理解,任何一个类的对象都可以通过Object类中的getClass()方法取得Class类对象
那么如何获取字节码呢?
- 第一 使用 Class.forName();
该方法返回的是一个Class 对象,这个方法大家是否熟悉呢? 对的在你链接数据库的时候加载Jdbc驱动的时候曾经用到过

说好听点叫做获取jdbc 驱动,难听点叫做加载字节码。
- 第二种: 使用已经现有的类.Class 方法

- 第三种则使用继承Object 类中的getClass 方法 此方法需要有一个现有的对象

我们可以利用反射做一些什么呢?
第一:获取package

第二:获取属性字段

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

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

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

通过构造器调用newinstance方法创建对象,注意此方法是可选列表,即可创建带参数或者不带参数的对象,
获取构造器的时候,传入构造器的参数为包装类型
第四:获取并且调用方法
User类
Test类

这是我这一段时间内学习反射的心得,在此也有一些话想要送给大家,知识是一个不断积累的过程,学习也如逆水行舟,可能在某一阶段,你并不明白你为什么要这么做,或者这么做的意义究竟是什么? 但是不要不做,慢慢的去积累下来。总有一天,良好的代码习惯以及重足的代码量,一定会在某一个项目,某一个Demo中 体现出来,上面是我写的内容,如果有不足 欢迎大牛指正。 加入群 大家可以一起交流 Q群:682677231
Java反射学习总结的更多相关文章
- Java反射学习系列-绪论
Java反射学习系列-绪论 https://blog.csdn.net/hanchao5272/article/details/79358924
- Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 本文是Java反射学习总结系列的最后一篇了,这里贴出之前文章的链接,有兴趣的可以打开看看. ...
- Java反射学习总结四(动态代理使用实例和内部原理解析)
通过上一篇文章介绍的静态代理Java反射学习总结三(静态代理)中,大家可以发现在静态代理中每一个代理类只能为一个接口服务,这样一来必然会产生过多的代理,而且对于每个实例,如果需要添加不同代理就要去添加 ...
- Java 反射学习笔记
要学反射,先要了解Class这个类,Class是所有Java类的一个总称,Class的实例中存储的是一个类的字节码,获取Class的实例有三种方式: System.class new Date().g ...
- Java反射学习:深入学习Java反射机制
一.Java反射的理解(反射是研究框架的基础之一) Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的 ...
- java反射学习之二万能EXCEL导出
一.EXCEL导出的实现过程 假设有一个对象的集合,现在需要将此集合内的所有对象导出到EXCEL中,对象有N个属性:那么我们实现的方式是这样的: 循环这个集合,在循环集合中某个对象的所有属性,将这个对 ...
- java反射学习之一反射机制概述
一.反射机制背景概述 1.反射(reflection)是java被视为动态语言的一个关键性质 2.反射机制指的是程序在运行时能获取任何类的内部所有信息 二.反射机制实现功能概述 1.只要给定类的全名, ...
- java反射学习笔记
1.java反射概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功 ...
- Java反射学习(java reflect)(二)
ok之前说了Java的反射和反射分析类,那这些东西有神马作用呢,下面就来说应用: 三.运行时使用反射分析对象 简单写一个Employee类,然后利用JAVA反射去取name域,getDeclareFi ...
- JAVA反射学习网摘
程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言".从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言.但是JAVA有着一个非常突出的动 ...
随机推荐
- objectARX创建 PaletteSet 停靠面板示例
objectARX创建 PaletteSet 停靠面板示例 图文By edata ,转载注明出处 http://www.cnblogs.com/edata 部分代码参考张帆<AutoCAD Ob ...
- 安装zlib的过程(Compression requires the (missing) zlib module)(Python2.6升级为2.7出现的问题)
觉得有必要把解决问题的过程写下来 1,因为要安装flask,所以安装pip,所以安装setuptools,所以安装zlib.(具体过程http://www.cnblogs.com/aiyr/p/726 ...
- javassist学习
最近学习了javassist的使用方法. javassist是一个字节码类库,可以用他来动态生成类,动态修改类等等. 下面是如果用javassist来动态创建一个类的demol 我们需要创建的目标类, ...
- jQuery的隔行换色
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- django 的 安全机制
xss 保护: xss攻击允许用户注入客户端脚本到其他用户的服务器上.通常通过存储恶意脚本到数据库,其他用户通过数据库获取恶意脚本,并在浏览器上呈现:或是使用户点击会引起攻击者javascirpt脚本 ...
- Python之scrapy框架之post传输数据错误:TypeError: to_bytes must receive a unicode, str or bytes object, got int
错误名:TypeError: to_bytes must receive a unicode, str or bytes object, got int 错误翻译:类型错误:to_bytes必须接收u ...
- java日期时间
字母 日期或时间元素 表示 示例 G Era 标志符 Text AD y 年 Year 1996; 96 M 年中的月份 Month July; Jul; 07 w 年中的周数 Number 27 ...
- (C/C++) STL 標頭檔 algorithm (一)
因為解題需求認識了一些STL相關funciton. 分別是 max_element (ForwardIterator first, ForwardIterator last); min_element ...
- SVN版本库备份和恢复
1.版本库备份 1.1.svnadmin dump方式备份 此方法借助的是Subversion官网推荐的svnadmin dump备份方式,它的优点是比较灵活,既可以进行全量备份又可以进行增量备份,并 ...
- JS正则表达式端口号,IP地址
端口号:65535 正则:/^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6 ...