package lecture.etc;

import java.lang.reflect.Method;

import jp.avaj.lib.debug.L;

/** リフレクション - メソッドの実行 Java */
class ExecMethod {
  public static void main(String[] args) {
    try {
      Class myClass = MyClass.class;
      L.p("-- setStr(\"abc\")の実行");
      Class[] params = new Class[]{String.class};
      Method method = myClass.getMethod("setStr",params);
      MyClass obj = new MyClass();
      Object[] vals = new Object[]{"abc"};
      method.invoke(obj, vals);
      //
      L.p("-- getStr()の実行");
      params = new Class[]{};
      vals = new Object[]{};
      method = myClass.getMethod("getStr",params);
      String result = (String)method.invoke(obj, vals);
      L.p("result="+result);
      //
      L.p("-- static メソッドの実行");
      params = new Class[]{};
      vals = new Object[]{};
      method = myClass.getMethod("method",params);
      vals = new Object[]{};
      method.invoke(null, vals);
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }
  static class MyClass {
    private String str;
    public void setStr(String str) {
      this.str = str;
    }
    public String getStr() {
      return this.str;
    }
    public static void method() {
      L.p("static method");
    }
  }
}
//---------------------------------------------------
//・目次 Javaエトセトラ
//  http://blogs.yahoo.co.jp/artery2020/40576157.html
//・目次 - Java入門
//  http://blogs.yahoo.co.jp/artery2020/39975776.html
//・目次 - ビジネスパーソンの常識と非常識
//  http://blogs.yahoo.co.jp/artery2020/39728331.html
//・目次 - 論理・発想・思考についての考察と鍛え方
//  http://blogs.yahoo.co.jp/artery2020/39657784.html
//---------------------------------------------------