我开始学习反射的初衷是为了理解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反射学习总结的更多相关文章

  1. Java反射学习系列-绪论

    Java反射学习系列-绪论 https://blog.csdn.net/hanchao5272/article/details/79358924

  2. Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 本文是Java反射学习总结系列的最后一篇了,这里贴出之前文章的链接,有兴趣的可以打开看看. ...

  3. Java反射学习总结四(动态代理使用实例和内部原理解析)

    通过上一篇文章介绍的静态代理Java反射学习总结三(静态代理)中,大家可以发现在静态代理中每一个代理类只能为一个接口服务,这样一来必然会产生过多的代理,而且对于每个实例,如果需要添加不同代理就要去添加 ...

  4. Java 反射学习笔记

    要学反射,先要了解Class这个类,Class是所有Java类的一个总称,Class的实例中存储的是一个类的字节码,获取Class的实例有三种方式: System.class new Date().g ...

  5. Java反射学习:深入学习Java反射机制

    一.Java反射的理解(反射是研究框架的基础之一) Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的 ...

  6. java反射学习之二万能EXCEL导出

    一.EXCEL导出的实现过程 假设有一个对象的集合,现在需要将此集合内的所有对象导出到EXCEL中,对象有N个属性:那么我们实现的方式是这样的: 循环这个集合,在循环集合中某个对象的所有属性,将这个对 ...

  7. java反射学习之一反射机制概述

    一.反射机制背景概述 1.反射(reflection)是java被视为动态语言的一个关键性质 2.反射机制指的是程序在运行时能获取任何类的内部所有信息 二.反射机制实现功能概述 1.只要给定类的全名, ...

  8. java反射学习笔记

    1.java反射概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功 ...

  9. Java反射学习(java reflect)(二)

    ok之前说了Java的反射和反射分析类,那这些东西有神马作用呢,下面就来说应用: 三.运行时使用反射分析对象 简单写一个Employee类,然后利用JAVA反射去取name域,getDeclareFi ...

  10. JAVA反射学习网摘

    程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言".从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言.但是JAVA有着一个非常突出的动 ...

随机推荐

  1. 微信小程序转发商品的详情页 + 转发功能(传参)

    1.微信小程序转发传参,利用的还是onShareAppMessageapi 2.利用的还有json转换 JSON 是用于存储和传输数据的格式. JSON 通常用于服务端向网页传递数据 函数 描述JSO ...

  2. Android中线程和线程池

    我们知道线程是CPU调度的最小单位.在Android中主线程是不能够做耗时操作的,子线程是不能够更新UI的.在Android中,除了Thread外,扮演线程的角色有很多,如AsyncTask,Inte ...

  3. Linux 历史信息history显示执行时间

    fc命令 fc命令自动掉用vi编辑器修改已有历史命令,当保存时立即执行修改后的命令,也可以用来显示历史命令.fc命令编辑历史命令时,会自动调用vi编辑器.fc保存文件后,会自动执行所编辑过的命令. 测 ...

  4. python --爬虫基础 --爬猫眼top 100 使用 requests 库的基本操作

    import requests import re import json import time def get_page(url): # 获取页数 headers = { 'User-Agent' ...

  5. 【JavaScript】动态原型模式创建对象 ||为何不能用字面量创建原型对象?

    var proto = ""; function Person(name, age, job) { this.name = name; this.age = age; this.j ...

  6. 06-图2 Saving James Bond - Easy Version (25 分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

  7. Hibernate 查询数据库中的数据

    1.Criteria介绍 Criteria与Session绑定,其生命周期跟随着Session结束而结束,使用Criteria时进行查询时,每次都要于执行时期动态建立物件,并加入各种查询条件,随着Se ...

  8. VUE 项目dependency was not found: * !!vue-style-loader!css-loader? 解决方案

    用npm run dev 运行vue项目时,出现以下错误: ERROR Failed to compile with errors :: This dependency was not found: ...

  9. 洛谷 P5238 整数校验器

    题目描述 有些时候需要解决这样一类问题:判断一个数 x 是否合法. x 合法当且仅当其满足如下条件: x 格式合法,一个格式合法的整数要么是 0,要么由一个可加可不加的负号,一个 1 到 9 之间的数 ...

  10. Mac 10.12安装虚拟机软件VMware Fusion 12

    说明:VMware创建的虚拟机是全平台通用的,如果要在Mac下识别,那么在虚拟机的文件夹后面增加后缀[.vmwarevm] 下载: (链接: https://pan.baidu.com/s/1eSLE ...