実は怖いjavaリフレクションの話

java

javaリフレクションとは何か

前にクラス内のメンバ変数名を全て取得する方法を紹介しました。
こちらで紹介した方法もjavaリフレクションを使っています

javaリフレクションは非常に便利です。
しかし、javaクラス設計の思想に反することも出来るという怖い一面もあります。
今回は、怖い一面にフォーカスしていきます。

[スポンサーリンク]

リフレクション怖い

javaリフレクションは、クラス設計者の意図に反したことが出来てしまう強力な技です。
例えば、privateメソッド・private変数もリフレクションを使えば、他クラスから参照したり書き換えたりすることが出来ます。

こちらのサイトに、javaリフレクションの基礎と怖さがわかりやすく説明されています。
とても参考になります。
いまさら聞けないJavaによるオブジェクト指向の常識

とは言っても便利なjavaリフレクション

隠ぺいされているフィールドにアクセス出来る怖さを持ちながらも、実はすごく便利な技です。
メンバ変数へアクセスしたい時に使うもよし。
特にjunit等でよく使われているイメージを持ちます。(私はよく使います。)

junitで、privateメソッドのみを動かしたい時は、リフレクションを使います。
junitで、privateメソッドをダミー(処理が入り組んでいてスキップさせたいとき)に置き換えたいときもリフレクションを使います。

毒にも薬にもなるリフレクション。
既存のクラス設計を壊さない!
このことに気を付けて正しく使いましょう!
それでは!