Java反射机制较全面

Java反射机制较全面

ID:36539021

大小:996.60 KB

页数:24页

时间:2019-05-09

Java反射机制较全面_第1页
Java反射机制较全面_第2页
Java反射机制较全面_第3页
Java反射机制较全面_第4页
Java反射机制较全面_第5页
资源描述:

《Java反射机制较全面》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java反射机制概述本课程主要讲述Java反射机制本课程要求大家对Java泛型知识有所了解,因为程序代码中大量使用了泛型相关知识2010-12-2第2页成都天府软件园有限公司TOSC-ITO目录Java反射简介………………………4ClassObject………………………8动态实例化………………………11Method使用………………………14Field使用………………………16实用案例………………………18总结………………………222010-12-2第3页成都天府软件园有限公司TOSC-ITO动态语言“程序运行

2、时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。尽管在这样的定义与分类下Java不是动态语言,它却有着一个非常突出的动态相关机制:Reflection。2010-12-2第4页成都天府软件园有限公司TOSC-ITO什么是反射反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法

3、;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2010-12-2第5页成都天府软件园有限公司TOSC-ITOJava反射的应用Spring框架:IOC(控制反转)Hibernate框架:关联映射等白盒测试2010-12-2第6页成都天府软件园有限公司TOSC-ITOJava反射相关的APIjava.lang包下Class:表示一个正在运行的Java应用程序中的类和接口,是Reflection的起源java.lang.reflec

4、t包下Field类:代表类的成员变量(也称类的属性)Method类:代表类的方法Constructor类:代表类的构造方法Array类:提供了动态创建数组,以及访问数组的元素的静态方法2010-12-2第7页成都天府软件园有限公司TOSC-ITOClass类是程序的一部分,每个类都有一个Class对象。换言之,每当编写并且编译了一个新类,就会产生一个Class对象Class没有公共构造方法。Class对象是在加载类时由Java虚拟机以及通过调用类加载器中的defineClass方法自动构造的,因此不能显

5、式地声明一个Class对象Class是Reflection起源。要想操纵类中的属性和方法,都必须从获取Classobject开始2010-12-2第8页成都天府软件园有限公司TOSC-ITO第一个实例就用大家非常熟悉的ArrayList类,我们尝试来获取ArrayList申明的方法。publicstaticvoidmain(String[]args){ArrayListaList=newArrayList();ClassalClass=aList.getClass();System.out.println("

6、①"+alClass);System.out.println("②"+alClass.getName());Method[]alMethod=alClass.getDeclaredMethods();for(Methodmethod:alMethod){System.out.println("③"+method);System.out.println("④"+method.getName());}}第一步永远是获得被反射类的Class对象!案例一2010-12-2第9页成都天府软件园有限公司TOSC-ITO获

7、取ClassObject获取方式说明示例object.getClass()每个对象都有此方法获取指定实例对象的ClassListlist=newArrayList();ClasslistClass=list.getClass();class.getSuperclass()获取当前Class的继承类ClassListlist=newArrayList();ClasslistClass=list.getClass();ClasssuperClass=listClass.getSuperclass();Object

8、.class.class直接获取ClasslistClass=ArrayList.class;Class.forName(类名)用Class的静态方法,传入类的全称即可try{Classc=Class.forName("java.util.ArrayList");}catch(ClassNotFoundExceptione){e.printStackTrace();}Primitive.TYPE基本

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。