我开始学习反射的初衷是为了理解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. 如何外部访问你的本地网站natapp

    用natapp,要实名制才可以获得免得authtoken 1.注册登录: https://natapp.cn/tunnel/lists 2.这个要填写一下,端口我写的是3000 3.客户端下载 解压: ...

  2. clickonce联机模式

    发布时选择该程序只能联机使用,这样本地就不会进行安装. 参考地址:https://blog.csdn.net/dqs78833488/article/details/52513948

  3. [flex] as3.0 实现基于air的简单浏览器

    <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx= ...

  4. VMware 虚拟机报错解决

    Could not apply the stored configuration for monitors none of the selected modes were compatible wit ...

  5. Machine learning第6周编程作业

    1.linearRegCostFunction: function [J, grad] = linearRegCostFunction(X, y, theta, lambda) %LINEARREGC ...

  6. python bytes和str之间的转换

    1 # bytes object 2 b = b"example" 3 4 # str object 5 s = "example" 6 7 # str to ...

  7. Hibernate 工具类

    1.HibernateConfigUtil.java(HIbernate配置工具类) import org.hibernate.Session; import org.hibernate.Sessio ...

  8. Sequential Minimal Optimization(SMO,序列最小优化算法)初探

    什么是SVM SVM是Support Vector Machine(支持向量机)的英文缩写,是上世纪九十年代兴起的一种机器学习算法,在目前神经网络大行其道的情况下依然保持着生命力.有人说现在是神经网络 ...

  9. P2486 [SDOI2011]染色(树剖)区间覆盖+区间的连续段

    https://www.luogu.org/problemnew/show/P2486 值的一看https://www.cnblogs.com/Tony-Double-Sky/p/9283262.ht ...

  10. js 实现星级评分

    最近的项目中有一个星级评分的需求,  自己就写了一下, 由于可能一个页面要用到多个,就采用了面向对象的写法. 用到的png图片也放到这里.    js要用到jquery. css: .sr-star{ ...