Java反射和动态代理.docx

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java反射和动态代理

Java Web分层架构类类的生命周期在一个类编译完成之后,下一步就需要开始使用类,如果要使用一个类,肯定离不开JVM。在程序执行中JVM通过装载,链接,初始化这3个步骤完成。1、类的装载是通过类加载器完成的,加载器将.class文件的二进制文件装入JVM的方法区,并且在堆区创建描述这个类的java.lang.Class对象。用来封装数据。?但是同一个类只会被类装载器装载以前链接就是把二进制数据组装为可以运行的状态。2、链接分为校验,准备,解析这3个阶段a)校验一般用来确认此二进制文件是否适合当前的JVM(版本);b)准备就是为静态成员分配内存空间,并设置默认值。c)解析指的是转换常量池中的代码作为直接引用的过程,直到所有的符号引用都可以被运行程序使用(建立完整的对应关系)。3、完成之后,类型也就完成了初始化,初始化之后类的对象就可以正常使用了,直到一个对象不再使用之后,将被垃圾回收。释放空间。当没有任何引用指向Class对象时就会被卸载,结束类的生命周期。二、类加载器 在java中有三种类类加载器。1)Bootstrap ClassLoader此加载器采用c++编写,一般开发中很少见。2)Extension ClassLoader用来进行扩展类的加载,一般对应的是jre\lib\ext目录中的类3)AppClassLoader加载classpath指定的类,是最常用的加载器。同时也是java中默认的加载器。反射一、反射的概念:?主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。通常我们创建一个对象,只需要一句话new,但是new的前提是在知道类名的情况下,如果不知道类名,怎么得到这个类的对象呢?其实我们可以通过反射来实现。一个/base/javaeeJava程序在运行时,可以获得任何一个类的字节码信息,包括类的修饰符(public,static等),基类(超类,父类),实现的接口,字段,方法等信息。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并逆向生成其对象实体、或对其fields设值、或唤起其methods。? 那么java是怎么实现这种机制的呢?Java的反射机制是通过反射API来实现的,主要包括以下几类:?1).Constructor类:用来描述一个类的构造方法?2).Field类:用来描述一个类的成员变量?3).Method类:用来描述一个类的方法.?4).Modifer类:用来描述类内各元素的修饰符?5).Array:用来对数组进行操作.?Constructor,Field,Method这三个类都是JVM(虚拟机)在程序运行时创建的,用来表示加载类中相应的成员。也就是说可以通过这些类来获取和改变反射类的所有成员。反射在框架中是最常用的手段。一个框架是先于调用者而存在的。当程序员用一个框架的时候,你写的什么类,框架怎么知道,就是通过java反射机制。Web.xml、Struts2.xml、applicationContext.xml、hibernate.cfg.xml、Peroson.hbm.xml、sqlMapperConfig.xml、PersonMapper.xml等配置文件中的class对应的字节码,都是通过反射来创建对象的。Param标签中的参数也是通过反射将其值设置到对象中。一个标准的javaBean的反射叫做内省。mybatis的resultMap标签中,把结果集的和PO对象的属性一一对应起来,就能把结果集赋值给PO对象,这也是通过反省实现的。通过mapper.xml中指定的type,得到PO对象。二、反射机制的作用:1、反编译:.class--.java2、通过反射机制访问java对象的属性,方法,构造方法等;这样好像更容易理解一些,下边我们具体看怎么实现这些功能。三、SUN提供的有关反射机制中的类java.lang.Class;java.lang.reflect.Constructor;java.lang.reflect.Field;java.lang.reflect.Method;java.lang.reflect.Modifier;?很多反射中的方法,属性等操作我们可以从这四个类中查询。还是哪句话要学着不断的查询API,那才是我们最好的老师。四、具体功能实现1、反射机制获取类有三种方法,我们来获取Employee类型//第一种方式:?Classc1?=?Class.forName(Employee);??//第二种方式:?//java中每个类型都有class?属性.?Classc2?=?Employee.class;???//第三种方式:?//ja

您可能关注的文档

文档评论(0)

didala + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档