前回のエントリーでは動的にクラスを使いまわす方法について書いたのですが、同様にリフレクション(動的にインスタンスを生成する方法)という技術についても学びました。
社長いわく黒魔術みたいなものといっていたのですが、確かに動的に呼び出すだけに実行時までエラーに気づけないというデメリットがありますね。
ただインスタンスの動的な生成などはできたりすると応用範囲が広がるので知識としてはもっておこうかなあと。
下記はある抽象クラスで型パラメータ<T>を定義しており、動的にインスタンスを生成する場合です。
1 2 |
Class<T> entityClass = getEntityClass(); entity = entityClass.newInstance(); |
他に動的にフィールド、メソッドを呼び出しするケースもあるようですが、ここでは省略します。