[size=x-large]代码小例子:[/size]
package com.test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* 使用反射调用对象私有方法,私有属性
*
* @author yale
*
*/
public class ReflectInvokeTest
{
public static void main(String[] args) throws Exception
{
Yale p = new Yale();
Class<? extends Object> clazz = p.getClass();
Method method = clazz.getDeclaredMethod("sayHiHi",
new Class[] { String.class });
method.setAccessible(true);// 压制java的访问控制检查 可以访问类的私有方法
Object o = method.invoke(p, new Object[] { "hello" });
System.out.println(o);
System.out.println("------------------");
Field f = clazz.getDeclaredField("name");
f.setAccessible(true);// 压制java的访问控制检查 可以访问类的私有属性
f.set(p, "lisi");
System.out.println(p.getName());
}
}
class Yale
{
private String sayHiHi(String word)
{
return word;
}
private String name = "yale";
public String getName()
{
return name;
}
}