java中有一种可以破坏封装的机制,称为反射,(通过反射调用类当中的私有方法)怎么使用呢?
请看下面的案例代码
package dotclassUse;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import Test.Test;
public class TestdotClassUse {
public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Class a = Test.class;//获取test的class属性,返回给Class的实例
Method[] methods = a.getDeclaredMethods();//类中声明的所有方法都放在方法数组中
for (Method method : methods) {
if(method.getName().equals("test1"))
{
method.setAccessible(true);
method.invoke(new Test());
}
}
}
}
package Test;
public class Test {
private int a;
public Test(){}
private void test1(){System.out.println("私有方法");}
public void test2(){System.out.println("共有方法");}
}