技術系のネタです。サクッと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なコンストラクタを呼び出せなくて困るってことがなくなってみんなハッピーですね。
僕から以上。
0 件のコメント:
コメントを投稿