EeBlog(テクニカルブログ)

第7回 メソッドの動的実行

前回、クラスの動的生成について書きました。
同様に、メソッドを動的に実行することが可能です。
今回は、その機能を利用してprintMethodというメソッドを実装してみました。
引数に渡されたオブジェクトのメソッドのうち、 引数なしで、戻り値があるメソッドを実行し結果を表示しています。

     public static void printMethod(Object obj) {
         Class cls = obj.getClass();
         
         try {
             for (int i = 0; i < cls.getMethods().length; i++) {
                 Method method = cls.getMethods()[i];
                 
                 if (method.getReturnType().equals(void.class)) {
                     continue;
                 }
                 if (method.getParameterTypes() != null
                         && method.getParameterTypes().length > 0) {
                     continue;
                 }
                 
                 Object value = method.invoke(obj, null);
                 String name = method.getName();
                 System.out.println(name + " = " + value);
             }
         } catch(Exception e) {
             e.printStackTrace();
         }
     }

データクラスのデバッグにもってこい!!