Javaのウェブを入力します

反射

  JavaプログラムのJavaリフレクション機構は、このクラスのすべてのプロパティおよびメソッドへのアクセスを持って、クラスのいずれかのために、動作状態を指し、所与のオブジェクトのプロパティとメソッドのいずれかを呼び出すことができます。コンテンツおよび反射と呼ばれる動的呼び出しオブジェクトクラスのメソッドにこの動的なアクセス

  Javaリフレクション機構は未知のクラスのプログラマは、クラス情報は、対応するメソッドのクラスを呼び出すには、より多様で柔軟な方法となって取得でき、Javaは、柔軟性とダイナミクスを増加させるための機構であります

 

意味

  まず、反射機構を大幅に適応する能力を向上させるために、結合モジュールを減らす、プログラムの柔軟性と拡張性を向上させることができます。

    第二に、あなたがプログラムを作成し、前にハードコードされたターゲットクラスなしで、リフレクションを通じてオブジェクトの任意の種類を制御させることができます。

    再度、反射の使用は、オブジェクトの実行時クラスで構成することができ、クラスを決定することは、オブジェクトのメソッドInvoke、メンバ変数とメソッドを有します。
    最後に、どこ反射メカニズムは、用途の反射がフレームにダイにコードを書くことを避けるために、その技術の枠組みを構築するための基礎です。
 
  それは、動的にコンパイルし、オブジェクトを作成し、大幅なプログラミング言語の柔軟性に影響を与え、および多状態の特性を強化し、さらに抽象オブジェクト指向プログラミングする能力を高めるために、したがって、プログラミングコミュニティを受けることができるので、それは、より多くの反射特性よりもすべての年齢。
 
原則
  反射(反射)は、動的機能を提供するJava、によって提供されるより高度な機能であり、この機能は、APIは、任意のJavaクラス、プロパティ、メソッド、コンストラクタを含み得ることができる関連の反射機構により反射されていること、修飾子、およびその他の情報。要素がJVMで決定する必要はありませんが実行されているので、彼らは、動的に作成または実行時に呼び出さ反映させることができるという。ミドルウェアにおける技術について多くを反映
 
機能
  図1に示すように、オブジェクトのプロパティ
  オブジェクトクラスのはgetClass()メソッドによって得られ、その後、インスタンス化フィールドは、getを通じてプロパティのインスタンスを取得するために、クラス宣言を受けたプロパティをオブジェクト、そして最後に()メソッド、そのノート プロパティは、ここでは公共でなければなりません あなたがアクセスしたい場合それ以外の場合はIllegalAccessExceptionが例外を報告し、アクセスを求めることができるマークを設定する必要があります

   

   図2に示すように、クラスの静的特性を得るために

  クラス宣言の受信特性をインスタンス化して、フィールドオブジェクトとしてオブジェクトと取得し、取得するプロパティが静的であるため、最初は、クラス属性クラスによると、そのように直接クラスから、異なります
 
  図3は、本方法は、オブジェクトに対して行わ。
    同様に、第1のオブジェクト取得するクラス、アレイのそのクラスの構成を、その状態探索方法作ります。getMethod()メソッドの方法で、この方法は、得られた実行されます。メソッドの呼び出しの実行、プロセス実行のオブジェクト所有者引数パラメータを有する方法。戻り値はオブジェクトです。
 
  図4に示すように、クラスの静的メソッドを実行します。
  その方法を除いて、基本的な原理と「クラスの実行方法、」同じ。所有者は援助なしで実行することができるようになりますのでコールは、静的メソッドであるため、呼び出し(nullで、引数)、ここでの最初の引数は、nullです。
 
  5、クラスの新しいインスタンス。私たちは、新しいインスタンスを作成するために、パラメータのコンストラクタを使用して行う方法。何のパラメータがnewoneClass直接使用できない場合。嘲笑を達成するためにnewlnstaneeO。同様に、第一の例を与えるように構成するクラス、および配列型は、設定パラメータはgetConstructor(argsClass)によって構成されている新しいインスタンスを作成するために最後に使用newlnstanee(引数)メソッドを得ました。
 
機能
 
  関わらず、大きな柔軟性と利便性の反射が、反射と短所をもたらします。反射機能は非常に強力ではなく、虐待を受けています。使用していない反射を完了することができた場合、次のような理由から、使用しないようにしてください。
  
  1、パフォーマンスの問題。
 
  Java仮想マシンが動的コードを最適化することができないので、Javaリフレクションメカニズムは、いくつかの動的型付けが含まれています。したがって、操作の反射効率が通常動作時よりもはるかに低い効率です。私たちは、頻繁に実行されるプログラムまたはコードの反射高速性能要件を使用しないでください。また、リフレクションを使用する方法、パフォーマンスのレベルを決定します。それはあまり実行されている場合、プログラムの一環として、パフォーマンスが問題になることはありません。
 
  2、セキュリティ制限。
 
  使用すると、通常のプログラムなしセキュリティ制限を実行する必要が反射しました。プログラムの安全性の要求した場合、それは、リフレクションを使用しないことをお勧めです。

 

    3、プログラムの堅牢性

  反射允许代码执行一些通常不被允许的操作,所以使用反射有可能会导致意想不到的后果。反射代码破坏了Java程序结构的抽象性,所以当程序运行的平台发生变化的时候,由于抽象的逻辑结构不能被识别,代码产生的效果与之前会产生差异。

おすすめ

転載: www.cnblogs.com/ranxiaofan/p/11907549.html