- 5
- 0
- 约2.24千字
- 约 15页
- 2016-10-23 发布于河南
- 举报
JAVA反射机制ppt
Java反射机制 目标 理解Java反射机制 应用Java反射API 什么是反射 在运行时加载、探知、使用编译期间完全未知的classes 允许运行中的 Java 程序对自身进行 “自审” Class类 反射的起源 当类加载 以后,JVM 便自动产生一个Class 对象 使用该对象就可以获取一个类中的方法、成员以及 构造方法的声明和定义等信息 反射API 反射API用于反应在当前Java虚拟机中的类、接口或者对象信息 功能—获取一个对象的类信息. —获取一个类的访问修饰符、成员、方法、构造方法以 及超类的信息. —检获属于一个接口的常量和方法声明. —创建一个直到程序运行期间才知道名字的类的实例. —获取并设置一个对象的成员,甚至这个成员的名字是 在程序运行期间才知道. —检测一个在运行期间才知道名字的对象的方法 使用 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); 简单示例 import java.lang.reflect.*; public class SearchMethods { 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 (Exception e) { System.err.println(e); } } } 应用反射API 应用反射API 应用反射API 创建对象 获取构造器信息 找出类的方法 获取类的字段 根据方法的名称来执行方法 实例:利用反射动态实例化对象 实例:利用反射动态实例化对象 实例:利用反射动态实例化对象 实例:利用反射动态实例化对象 1?.获得类的构造方法 ?Constructor?getConstructor(Class[]?params)?--?获得使用特殊的参数类型的公共构造函数 ?Constructor[]?getConstructors()?--?获得类的所有公共构造函数? ?Constructor?getDeclaredConstructor(Class[]?params)?--?获得使用特定参数类型的构造函数(与接入级别无关)? ?Constructor[]?getDeclaredConstructors()?--?获得类的所有构造函数(与接入级别无关)? 2.获取类定义变量?Field?getField(String?name)?--?获得命名的公共字段? ?Field[]?getFields()?--?获得类的所有公共字段??Field?getDeclaredField(String?name)?--?获得类声明的命名的字段??Field[]?getDeclaredFields()?--?获得类声明的所有字段? 3.获取类定义方法 ??Method?getMethod(String?name,?Class[]?params)?--?使用特定的参数类型,获得命名的公共方法? ?Meth
原创力文档

文档评论(0)