2013年9月26日木曜日

privateなコンストラクタをリフレクションで呼び出す

どうも僕です。

技術系のネタです。サクッとprivateなコンストラクタをリフレクションで呼びだす方法をまとめておきます。

コンストラクタの呼び出し方です。

Class clazz = Class.forNmae(hoge.Piyo);

Constructor constructor = clazz.getDeclaredConstructor(null);

constructor.setAccessible(true);

Piyo bean = (Piyo)constructor.newInstance(null);


軽く説明を入れておくとclazzはPiyoクラスのClassオブジェクトを取得しています。constructorはPiyoクラスのコンストラクタを取得しています。setAccessible(true)でアクセスの許可を行います。あとは取得しているインスタンスをPiyoクラスにキャストしてインスタンスを生成するといった流れになっています。
privateなコンストラクタを呼び出せなくて困るってことがなくなってみんなハッピーですね。

僕から以上。