package pkg;
import java.lang.reflect.*;
class Tests {
private int pri = 10;
protected int pro = 20;
public int pub = 30;
private void pri_print() {
System.out.println("private ");
}
protected void pro_print() {
System.out.println("protected ");
}
public void pub_print() {
System.out.println("public ");
}
}
public class Test {
public static void main(String[] args) throws IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
Class c = Tests.class;
Field[] fs = c.getDeclaredFields();
// 设为可访问的
Field.setAccessible(fs, true);
for (int i = 0; i < fs.length; i++) {
System.out.println(fs[i].getName());
}
// 得到private int pri的值
System.out.println(fs[0].getInt(new Tests()));
Method[] ms = c.getDeclaredMethods();
Method.setAccessible(ms, true);
for (int i = 0; i < ms.length; i++) {
System.out.println(ms[i].getName());
}
// 得到定义这个方法的类名
System.out.println(ms[0].getDeclaringClass().getName());
// 调用private方法
//ms[0].invoke(new Test(), null);
}
}
----------------------------------
pri
pro
pub
10
pri_print
pro_print
pub_print
pkg.Tests