您的位置:首页 > 其它

【反射】反射机制的使用步骤

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();

下面将通过实例讲述如何通过前面所诉的三步来执行某对象的某个方法:

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方法一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息