什么是Java反射.ppt

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

JAVA反射 目标 理解Java 反射机制 掌握Java 反射API 什么是Java 反射 Reflection 是 Java 程序开发语言的特征之一 允许运行中的 Java 程序对自身进行 “自审” 反射API用于反应在当前Java虚拟机中的类、接口或者对象信息 Java 反射API的功能 获取一个对象的类信息. 获取一个类的访问修饰符、成员、方法、构造方法以及超类的信息. 检获属于一个接口的常量和方法声明. 创建一个直到程序运行期间才知道名字的类的实例. 获取并设置一个对象的成员,甚至这个成员的名字是在程序运行期间才知道. 检测一个在运行期间才知道名字的对象的方法 一个简单的例子 使用 Reflection java.lang.relfect 包 遵循三个步骤 第一步是获得你想操作的类的 java.lang.Class 对象 第二步是调用诸如 getDeclaredMethods 的方法 第三步使用 reflection API 来操作这些信息 获得一个 Class 对象 如果一个类的实例已经得到,你可以使用 【Class c = 对象名.getClass(); 】 例: TextField t = new TextField(); Class c = t.getClass(); Class s = c.getSuperclass(); 如果你在编译期知道类的名字,你可以使用如下的方法 Class c = java.awt.Button.class; 或者 Class c = Integer.TYPE; 如果类名在编译期不知道, 但是在运行期可以获得, 你可以使用下面的方法 Class c = Class.forName(strg); 取得类中定义列表 取得该类中定义的所有方法的列表 getDeclaredMethods() 取得该类中定义的所有访问修饰符列表 getModifiers() 发现 Superclasses列表 getSuperclass() 使用 reflection API 来操作 找出类的方法 找出类的方法 获取构造方法信息 获取类的属性 根据方法的名称来执行方法 创建新的对象 改变属性的值 使用数组 总结 利用Java反射API 可以在运行过程中“自审” 在运行中查找方法、属性、访问修饰符等 在运行中操作对象 作业 定义一个类 public class Reflection 该类完成对一些反射API的实现封装 实现方法有 1. 得到某个对象的属性 2. 得到某个类的静态属性 3. 执行某对象的方法 4. 执行某个类的静态方法 5. 新建实例 6. 判断是否为某个类的实例 * 1-* * 1 import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try { Class c = Class.forName(args[0]); Method m[] = c.getDeclaredMethods(); for (int i = 0; i m.length; i++) System.out.println(m[i].toString()); } catch (Throwable e) { System.err.println(e); } } } 执行如下语句: java DumpMethods java.util.Stack 使用 Class.forName 载入指定的类 getDeclaredMethods 来获取这个类中定义了的方法列表 列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型 class NewA { } public class instance1 { public static void main(String args[]) { try { Class cls = Class.forName( NewA ); boolean b1 = cls.isInstance(new Integer(37)); System.out.printl

文档评论(0)

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

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

1亿VIP精品文档

相关文档