回転:反射呼び出しプライベートメソッド/プライベート静的メソッドのテスト
5324 ワード
原文:https://blog.csdn.net/zhoudqa/article/details/78256928
getDeclaredMethodメソッド1番目のパラメータはメソッド名、2番目のパラメータタイプの配列
invokeメソッドの最初のパラメータはクラスまたはオブジェクトインスタンスであり、後のパラメータはメソッドパラメータである.
setAccessibleはtrueに設定する必要があります.そうしないとprivateメソッド###########を呼び出すことができません.主にこの文です.
実行結果:
this is a private method and the parameters is: test privatethis is a private static method and the parameters is: test static private 1296699761public method end!--------------------- 作者:zhoudqa出所:CSDN原文:https://blog.csdn.net/zhoudqa/article/details/78256928本文は博主のオリジナルの文章で、転載して博文のリンクを添付してください!
転載先:https://www.cnblogs.com/mumu122GIS/p/9855935.html
1 import java.lang.reflect.Method;
2
3 class T{
4 public void me2(String s){
5 System.out.println("public method ");
6 }
7 private static void me1(String s,Integer i){
8 System.out.println("this is a private static method and the parameters is: "+s+" "+i);
9 }
10 private void me(String s){
11 System.out.println("this is a private method and the parameters is: "+s);
12 }
13 }
14 public class Test1 {
15 public static void main(String[] args){
16 T t=new T();
17 try{
18 Method method=Class.forName("T").getDeclaredMethod("me", new Class[]{String.class});
19 method.setAccessible(true);
20 method.invoke(t, "test private");
21 Method method1=Class.forName("T").getDeclaredMethod("me1", new Class[]{String.class,Integer.class});
22 method1.setAccessible(true);
23 method1.invoke(T.class, "test static private",1296699761);
24 Method method2=t.getClass().getDeclaredMethod("me2",new Class[]{String.class});
25 //method2.setAccessible(true);
26 method2.invoke(t, "test public");
27 }catch(Exception e){
28 e.printStackTrace();
29 }
30 System.out.println("end!");
31 }
32 }
getDeclaredMethodメソッド1番目のパラメータはメソッド名、2番目のパラメータタイプの配列
invokeメソッドの最初のパラメータはクラスまたはオブジェクトインスタンスであり、後のパラメータはメソッドパラメータである.
setAccessibleはtrueに設定する必要があります.そうしないとprivateメソッド###########を呼び出すことができません.主にこの文です.
実行結果:
this is a private method and the parameters is: test privatethis is a private static method and the parameters is: test static private 1296699761public method end!--------------------- 作者:zhoudqa出所:CSDN原文:https://blog.csdn.net/zhoudqa/article/details/78256928本文は博主のオリジナルの文章で、転載して博文のリンクを添付してください!
転載先:https://www.cnblogs.com/mumu122GIS/p/9855935.html