Java反射メカニズムの基本概念

1871 ワード

Java反射メカニズムの基本概念
         :MyEclipse 10/Java
  :   
    :2019 06 26 

1、反射メカニズムとは何ですか.簡単に言えば、反射メカニズムとは、プログラムが実行時に指定されたクラスの情報を取得できることを意味する.Javaでは,クラスの名前が与えられる限り,反射機構によりクラスのすべての情報を得ることができる.
2、反射メカニズムは何に使いますか.実は簡単に言えば、反射はクラスの名前だけを知っている場合、クラス全体の内部の構造を理解し、内部のメンバーや方法などによりよくアクセスできるメカニズムです.
3、反射メカニズムの利点と欠点Java言語反射は動的リンクプログラムコンポーネントの多機能方法を提供する.これにより、ターゲットクラスを事前にハードコーディングすることなく、クラスのオブジェクトを作成および制御できます(セキュリティの制限に応じて).これらのプロパティにより、反射は、非常に一般的な方法でオブジェクトとコラボレーションするライブラリの作成に特に適しています.たとえば、反射は、データベース、XML、または他の外部形式のオブジェクトを格納し続けるフレームワークでよく使用されます.Java reflectionは、クラスとデータ構造が名前で動的に関連情報を取得し、実行中のプログラムでこれらの情報を操作できるようにするのに役立ちます.Javaのこの特性は非常に強く、C、C++、Fortran、Pascalなどの他の一般的な言語ではありません.実行時にタイプを決定し、オブジェクトをバインドします.動的コンパイルはjavaの柔軟性を最大限に発揮し、多態の応用を体現し、クラス間のレンコンの整合性を低下させる.しかし、反射には2つの欠点がある.1つ目はパフォーマンスの問題です.フィールドおよびメソッドへのアクセスでは、直接コードよりも反射が遅くなります.パフォーマンスの問題の程度は、プログラムで反射をどのように使用するかによって異なります.プログラムの実行に比較的少ない部分である場合、遅いパフォーマンスは問題ではありません.テストで最悪の場合のタイムチャートに表示される反射動作は数マイクロ秒しかかかりません.パフォーマンスの重要なアプリケーションのコアロジックで使用される場合にのみ、パフォーマンスの問題が反射されます.多くのアプリケーションでより深刻な欠点は、反射を使用すると、プログラム内で実際に発生することがぼやけてしまうことです.プログラム担当者は,ソースコードにプログラムの論理,反射などソースコードを迂回した技術がメンテナンス問題をもたらすことを望んでいる.反射コードは、パフォーマンス比較のコードインスタンスで見られるように、対応する直接コードよりも複雑です.これらの問題を解決する最善の方法は、反射を保守的に使用することです.反射が本当に柔軟性を高めることができる場所だけ、ターゲットクラスでの使用を記録することです.(転載)
4、反射メカニズムは一般的にどのような状況で基礎フレームワークを作る時に使うことができて、一般的な応用面は少ないが、このようなものは、基本的に今多くのオープンソースフレームワークがすでにあなたにパッケージされていて、自分ではほとんど書く必要はありません.典型的には上の階のHibernateのほかに、Springも使われています.古典的なのはxmlあるいはpropertiesの中で配置を書いて、それからJavaクラスの中でxmlあるいはpropertiesの中の内容を解析して、1つの文字列を得て、それから反射して、この文字列によってあるクラスの実例を得て、このようにいくつかのものを動的に配置することができて、毎回コードの中でnewあるいはその他の事をしないで、後で変更する場合はプロファイルを直接変更し、コードのメンテナンスが便利になります.また、Javaクラスでは必ずしも別の方法を直接呼び出すことができない場合もあります.この場合も反射メカニズムで実現できます.総じて言えば、自分で書くのは少なくて、具体的にいつそれを使うかは需要によって、上の階の言うとおりで、1つのStringによってあなたの望む実体のオブジェクトを得て、それから元のものを呼び出します.しかし、自分でフレームを書くなら、たくさん使います.(転載)