反射関連のメソッド

       クラス clazz = Class.forName("com.test.zzz.person");

        //プライベート メソッドではなく、clazz に対応するクラス内のすべてのメソッドを取得し、親クラスから継承されたすべてのメソッドを取得します。
        Method[]methods = clazz.getMethods();
        for(Method method:methods){             System.out. print (" "+method.getName()+"()");         }         System.out.println("----------------------- -");


       

        //プライベート メソッドを含むすべてのメソッド、すべての宣言されたメソッドを取得し、現在のクラスのメソッドのみを取得しますmethods
        = clazz.getDeclaredMethods();
        for(Method method:methods){             System.out.print(" "+method.getName ()+"()");         }


 

        // 指定したメソッドを取得するにはパラメータ名とパラメータリストが必要です パラメータがない場合はメソッドを記述する必要はありません Method Method =
        clazz.getDeclaredMethod("setName", String.class);
        System.out.println (方法);

       注: public void setAge(int age) { } メソッドは、
        この方法では取得できません。メソッドのパラメーターの型が int 型で、
        メソッドがリフレクションに使用される場合、int 型は Integer として記述されます。 public void setAge(Integer age) { }
        int.class として記述されたメソッドのパラメータを取得するか、

        メソッド = clazz.getDeclaredMethod("setAge", int.class);
        System.out.println(メソッド);


        // メソッドを実行します。最初のパラメータはメソッドを実行するオブジェクトを示し、残りのパラメータはメソッドの実行時に渡す必要があるパラメータです。 Object obje
        = clazz.newInstance();
        method.invoke(obje,18 );

        //プライベート メソッドの実行では、invoke を呼び出す前に、method.setAccessible(true) を追加する必要があります;
        method = clazz.getDeclaredMethod("privateMethod");
        System.out.println(method);
        System.out.println("- - -------------------------");
        System.out.println("プライベート メソッドの実行");
        method.setAccessible(true);
        メソッド 。呼び出し(オブジェクト);

おすすめ

転載: blog.csdn.net/u010207898/article/details/131964905