JAvaは反射を利用してクラスのプライベートメソッドを呼び出す


一.クラスは以下の通りです.
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);この一言は,メソッドを堅持しないアクセス権限を示す.
                     メソッドは、反射メカニズムによって呼び出される修飾子です.