java反射原理及Class应用】的更多相关文章

什么是反射? 反射,一种计算机处理方式.是程序可以访问.检测和修改它本身状态或行为的一种能力.java反射使得我们可以在程序运行时动态加载一个类,动态获取类的基本信息和定义的方法,构造函数,域等.除了检阅类信息外,还可以动态创建类的实例,执行类实例的方法,获取类实例的域值.反射使java这种静态语言有了动态的特性. 类的加载 java反射机制是围绕Class类展开的,在深入java反射原理之前,需要对类加载机制有一个大致的了解.jvm使用ClassLoader将字节码文件(class文件)加载到…
转自:http://www.kokojia.com/article/12598.html 学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现.下面我就写一个Ioc DI的程序.Spring就相当于一个Bean工厂,你写好自己的bean,输入配置文件,Spring就可以帮你自动生成bean对象.下面我们创建一个java工程SimulateIoc 我们先写二个Bean.内容都一样,只是类名不一样.定义一个Spring配置文件,我们起名字叫IocConfig.xml…
一.什么是JAVA的反射 1.在运行状态中,对于任意一个类,都能够知道这个类的属性和方法. 2.对于任意一个对象,都能够调用它的任何方法和属性. 这种动态获取信息以及动态调用对象的方法的功能称为JAVA的反射. 二.反射的作用 在JAVA中,只有给定类的名字,就可以通过反射机制来获取类的所有信息,可以动态的创建对象和编译. 三.反射的原理 JAVA语言编译之后会生成一个.class文件,反射就是通过字节码文件找到某一个类.类中的方法以及属性等. 反射的实现主要借助以下四个类: Class:类的对…
反射是java的一个特性,这一特性也使得它给了广大的第三方框架和开发过者很大的想像空间. 通过反射,java可以动态的加载未知的外部配置对象,临时生成字节码进行加载使用,从而使代码更灵活!可以极大地提高应用的扩展性! 但是,除了停留在使用其华丽功能,我们还可以去看看其实现! 主要看两个方法的使用: 来个例子! public class HelloReflect { public static void main(String[] args) { try { // 1. 使用外部配置的实现,进行动…
本例使用的xml解析方式为jdom ... <ROOT> <Consignment> ... </Consignment> </ROOT> 解析xml文件 InputStream xmlFileStream = new FileInputStream(xmlFile); SAXBuilder builder = new SAXBuilder(new XMLReaderSAX2Factory(false)); Document document = build…
首先了解一下反射的原理,什么是反射?所谓的反射就是指java 语言在运行时拥有一项自观的能力,反射能使你得到装载到 jvm 中的类的内部信息,它不需要你在编码的时候就知道所需类的内部信息,允许程序执行时才得到所需类的内部信息.反射能够构建灵活的应用的程序. 使用反射为bean 赋值 ,主要表现在几点,一:利用反射查找出bean类所有public方法,类定义的属性.二:如果是赋值,必须先判断属性类型,再逐个赋值, 三:调用method 类的invoke方法访问bean 的set .get 方法设值…
1.首先用Java反射机制的要做到的一个目的:我们都知道通过得到一个对象中的指定方法或者属性等,基于这个原理我们来做一个 通用的功能,让客户端可以通过传入的对象和一个标识去调用这个对象里自己想要的方法.这样就达到了一法多用的效果了 //methodName相当于标识一个方法 得到meth方法 Method meth=obj1.getClass().getMethod(methodName, Map.class); //obj1相当于存放公共方法的容器=一个实例, obj2相当于请求参数 meth…
java类的加载过程 调用java命令运行程序时,该命令会启动一条java虚拟机进程,该程序的所有线程都会运行在这个虚拟机进程里面.程序运行产生的线程.变量都处于这个进程,共同使用该JVM进程的内存区. 类加载过程 当程序调用一个类的时候,该类的class文件会被读入到内存中,用一个数组存放,产生一个对应的类对象.此时class还不可使用.而后开始检查该class文件是否正确,然后给类中的静态变量分配储存空间.最后对静态对象和静态代码块执行初始化工作.如果该类存在父类.而且没有被加载,那么就会先…
一.Java 反射的定义 反射机制是在运行状态中, 对于任意一个类, 都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法或者属性: 二.反射提供的功能: 在运行时判断任意一个对象所属的类: 在运行时构造任意一个类的对象: 在运行时判断任意一个类所具有的成员变量和方法: 在运行时调用任意一个对象的方法: 生成动态代理 三.获取反射对象(反射入口) Class.forName(全类名) 需要抛异常 throws ClassNotFoundException XX.cla…
背景 反射在Java中非常重要,是Java区别于其他编程语言的一大特性.Java中的AOP切面.动态代理等看起来像黑魔法一样的技术,就离不开反射.字节码等.这些技术能在不侵入原有代码的情况下,做一些增强的非功能性需求.多提一句,千万不要把业务逻辑放在AOP切面.动态代理里,否则后人绝对会骂. AOP切面:在方法执行前后增加逻辑,可决定方法如何执行.甚至不执行. 动态代理:在运行时生成目标类的代理类,可增强目标类的功能. 本文总结一下反射的原理和实际用法.后续有空再介绍AOP切面.动态代理. 什么…