回答編集履歴
2
refine
answer
CHANGED
@@ -11,4 +11,7 @@
|
|
11
11
|
他回答にある`private`を無視なども、このコンパイラ支援(チェック機構)を受けられない/受けなくてすむことを利用したテクニックです。
|
12
12
|
|
13
13
|
> ・リフレクションの使用されるケース
|
14
|
+
一部のアプリケーション・フレームワークの実装などで利用されます。特に、"アノテーション"を利用するフレームワークでは高度に活用されています。
|
15
|
+
|
14
|
-
|
16
|
+
フレームワーク・コードの実装時点では、利用側の具体的なクラスやインターフェイスは分かりませんから、リフレクション機能が必要になります。
|
17
|
+
|
1
refine
answer
CHANGED
@@ -6,7 +6,9 @@
|
|
6
6
|
> ・リフレクションよりインターフェースを使用せよと言っている意味(Effective Java内で)
|
7
7
|
上記のようにリフレクションは強力な言語機能ですが、コンパイラの支援を受けられないという問題があります。
|
8
8
|
|
9
|
-
たとえば、メソッド名や引数/個数などの型情報が一致していないと、コンパイラは不整合をチェックしエラーを報告**してくれます**。一方のリフレクションは単なる文字列としてメソッド名や引数型を処理するので、不整合のチェックをコンパイル時には行えず、実行時になって初めて例外スローされます。
|
9
|
+
たとえば、メソッド名や引数/個数などの型情報が一致していないと、コンパイラは不整合をチェックしエラーを報告**してくれます**。一方のリフレクションは単なる文字列としてメソッド名や引数型を処理するので、不整合のチェックをコンパイル時には行えず、実行時になって初めて例外スローされます。(不具合の発覚フェーズが遅れます。)
|
10
10
|
|
11
|
+
他回答にある`private`を無視なども、このコンパイラ支援(チェック機構)を受けられない/受けなくてすむことを利用したテクニックです。
|
12
|
+
|
11
13
|
> ・リフレクションの使用されるケース
|
12
14
|
一部のアプリケーション・フレームワークの実装などで利用されます。フレームワークの実装時には、具体的に利用する側のクラスやインターフェイス情報はわかりませんから、リフレクション機能が必要になります。
|