【反射】反射机制的使用步骤
2015-02-18 09:10
197 查看
使用java的反射机制,一般需要遵循三步:
获得你想操作类的Class对象
通过第一步获得的Class对象去取得操作类的方法或是属性名
操作第二步取得的方法或是属性
Java运行的时候,某个类无论生成多少个对象,他们都会对应同一个Class对象,它表示正在运行程序中的类和接口。
那么如何取得操作类的Class对象呢?常用的有三种方式:
调用Class的静态方法forName,如:class.forName()
使用类的.class语法,如:Class<?> cls = String.class;
调用对象的getClass方法,如:String str = "abc";Class<?> cls = str .getClass();
下面将通过实例讲述如何通过前面所诉的三步来执行某对象的某个方法:
当然,每个类的方法也必有一个Method对象与之对应。要通过反射的方式调用这个方法,
就要首先获得这个方法的Method对象,如代码16行,然后用Method对象反过来调用这个方法,如代码18行。
注意16行getMethod方法的第一个参数是方法名,第二个是此方法的参数类型,如果是多个参数,接着添加参数就可以了,
因为getMethod是可变参数方法。执行18行代码的invoke方法,其实也就是执行show方法,注意invoke的第一个参数,
是DisPlay类的一个对象,也就是调用DisPlay类哪个对象的show方法,第二个参数是给show方法传递的参数。
类型和个数一定要与16行的getMethod方法一致。
获得你想操作类的Class对象
通过第一步获得的Class对象去取得操作类的方法或是属性名
操作第二步取得的方法或是属性
Java运行的时候,某个类无论生成多少个对象,他们都会对应同一个Class对象,它表示正在运行程序中的类和接口。
那么如何取得操作类的Class对象呢?常用的有三种方式:
调用Class的静态方法forName,如:class.forName()
使用类的.class语法,如:Class<?> cls = String.class;
调用对象的getClass方法,如:String str = "abc";Class<?> cls = str .getClass();
下面将通过实例讲述如何通过前面所诉的三步来执行某对象的某个方法:
package com.ithema.reflection; import java.lang.reflect.Method; /** * Java 反射练习。 * * @author Ct */ public class ReflectionTest { public static void main(String[] args) throws Exception { DisPlay disPlay = new DisPlay(); // 获得Class Class<?> cls = disPlay.getClass(); // 通过Class获得DisPlay类的show方法 Method method = cls.getMethod("show", String.class); // 调用show方法 method.invoke(disPlay, "zhangsan"); } } class DisPlay { public void show(String name) { System.out.println("Hello :" + name); } }java程序的每个类都会有个Class对象与之对应。Java反射的第一步就是获得这个Class对象,如代码14行。
当然,每个类的方法也必有一个Method对象与之对应。要通过反射的方式调用这个方法,
就要首先获得这个方法的Method对象,如代码16行,然后用Method对象反过来调用这个方法,如代码18行。
注意16行getMethod方法的第一个参数是方法名,第二个是此方法的参数类型,如果是多个参数,接着添加参数就可以了,
因为getMethod是可变参数方法。执行18行代码的invoke方法,其实也就是执行show方法,注意invoke的第一个参数,
是DisPlay类的一个对象,也就是调用DisPlay类哪个对象的show方法,第二个参数是给show方法传递的参数。
类型和个数一定要与16行的getMethod方法一致。
相关文章推荐
- 使用反射机制的步骤及创建类对象的3种方式
- 使用C#的反射机制时遇到的问题
- C#使用反射机制获取类信息
- PHP中使用反射机制实现动态代理
- .NET中反射机制的使用与分析
- 使用反射机制用一个类实例的值为DataTable添加一行
- 5)使用for(...in...)实现反射机制
- 为什么要使用反射机制
- 使用.Net Reflection 反射机制 动态获取对象字段内容的示例
- 使用C#的反射机制时遇到的问题
- 使用反射机制 来把一个具体的bean 处理成一个map。并且获得其中的field和值
- C#使用反射机制获取类信息
- 使用C#的反射机制时遇到的问题
- JavaScript 使用for(…in…)实现反射机制
- Delphi2009 反射机制的使用
- 使用C#的反射机制时遇到的问题
- C#使用反射机制获取类信息
- 使用反射机制实现实体列表到DataTable的深层字段转换
- 深度复制一个对象方法。利用反射机制,不使用Serialization,也不使用ICloneable接口
- .NET中反射机制的使用与分析