</pre><pre name="code" class="java">package com.test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectDemo {
public static void main(String[] args) throws Exception {
Class clazz = PackageClazz.class;
// for (Method method : clazz.getDeclaredMethods()) {
// if ("privilegedMethod".equals(method.getName())) {
// method.setAccessible(true);
// method.invoke(clazz.newInstance(), "ajaxfan", "hah");
// break;
// }
// }
// 访问私有方法
Method method = clazz.getDeclaredMethod("privilegedMethod", String.class, String.class);
method.setAccessible(true);//设置不做安全检查,这样才能访问private属性
method.invoke(clazz.newInstance(), "I'm","Louis");
// method.invoke(new PackageClazz(), "I'm","Louis");
// 访问私有变量
Field field = clazz.getDeclaredField("privilegeField");
field.setAccessible(true);
System.out.println(field.getInt(new PackageClazz()));
}
}
class PackageClazz {
private int privilegeField = 2;
private void privilegedMethod(String a,String b) {
System.out.println(a + "===" + b);
}
}
java通过反射调用私有变量和私有方法
最新推荐文章于 2023-10-28 18:57:17 发布