JAvaは反射を利用してクラスのプライベートメソッドを呼び出す
一.クラスは以下の通りです.
二、同じパケット内の別のクラスでメソッドaddを呼び出すには、次のようにします.
三、総括:method.setAccessible(true);この一言は,メソッドを堅持しないアクセス権限を示す.
メソッドは、反射メカニズムによって呼び出される修飾子です.
public class Calculator2{
private int add(int a,int b){
return a+b;
}
}
二、同じパケット内の別のクラスでメソッドaddを呼び出すには、次のようにします.
public class Test {
public static void main(String[] args){
Calculator2 calculator2 = new Calculator2();
Class<Calculator2> clazz = Calculator2.class;
Object result = null;
try{
Method method = clazz.getDeclaredMethod("add", new Class[]{Integer.TYPE,Integer.TYPE});
method.setAccessible(true);
result = method.invoke(calculator2, new Object[]{2,3});
}catch (Exception e) {
e.printStackTrace();
}finally{
System.out.println(result);
}
}
}
三、総括:method.setAccessible(true);この一言は,メソッドを堅持しないアクセス権限を示す.
メソッドは、反射メカニズムによって呼び出される修飾子です.