[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;
}
}
本文通过一个具体的Java示例,展示了如何使用Java反射机制来调用对象的私有方法及修改私有属性。反射机制允许程序在运行时获取类的信息并直接操作类的对象,这为程序带来了极大的灵活性。
129

被折叠的 条评论
为什么被折叠?



