Javaでクラス名からインスタンス化する

alkoshikawa 330views 更新:2013年12月12日

クラスを追加したら勝手に読み込んで使えるようにしたいとき用です。

Execute1, Execute2・・・という形式でファイルを配置した場合以下のように呼び出すことができます。
ExecuteはインターフェースかAbstractを継承している必要があります。
この場合「AbstractExecute」を継承しているとします。

  public void doExecute(int version) throws Exception {
    String classPrefix = "com.sample.Execute";
    String className = classPrefix + String.valueOf(version);
    Class<?> cls = Class.forName(className);
    if (null != cls) {
      AbstractExecute execute =
        (AbstractExecute) cls.getConstructor({引数のclass}.class).newInstance(
          {引数});
      execute.doSomeThing();
    }
  }

 

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません