リフレクションとは何ですか?
リフレクションには「reverse」と付いているので、逆の処理ということになります。それでは、まず転送プロセスがどのようなものかを見てみましょう。 クラスを設計し、クラスをオブジェクトにインスタンス化します。オブジェクトはメソッドまたはプロパティを呼び出していくつかの関数を実装します。#リフレクションとは何ですか?
上の写真をまだ覚えているかどうかわかりませんが、これは私が Java に初めて触れたときに学んだ知識です。私自身の理解では、1 がわかり、2 が推測され、2 を通じて他の情報が得られるようになりました。 (これは単なる私の推測です。真実かどうかについては、今後さらに掘り下げる必要があります。)
現実のシナリオにたとえると、次のとおりです。
你:妈妈,你知道剪刀在哪吗? 妈妈:我那天放针线的时候好像在针线盒里看到了,你去找找有没有。针线盒在客厅的茶几上。 你:好的。
Then 「裁縫」から「裁縫箱」を導き出し、「裁縫箱」から「はさみ」を見つけました。
私たちの反省は、クラスまたはオブジェクトから Class クラスを推定し、Class クラスからクラス情報を取得することです。
さらに混乱していますか?心配しないで、下を見てください。
裁縫箱を探す - Class クラスを取得する
まず、Class クラスとは何でしょうか。People クラスが p のクラスであるのと同様に、Class クラスは People クラスのクラスです。 Class クラスは p の「祖父」です。
次のように理解できます。java.lang.Class のインスタンス オブジェクトは People で、People のインスタンス オブジェクトは p です。私たちのアイデアは、People クラスまたは p オブジェクトを通じて Class クラスを取得し、次に Class クラスを通じて属性、メソッド、コンストラクターなどの People クラス情報を取得することです。
Class クラスが何であるかがわかったので、それを取得する方法について話しましょう。
Class クラスを見つけるには 3 つの方法があります:
c1、c2、および c3 は「クラス タイプ」と呼ばれることに言及する価値があります。 People クラス。さて、既知の条件を要約しましょう:
People: Class
p: Object
c: Class Type
# #Findハサミ - People クラスの情報を取得します
アプリケーション 1: クラスのすべてのメソッドを取得します
People クラスの取得メソッドにおいて、ms は People クラスのメソッドを格納する配列であり、ループを通じてその名前、パラメータの型、戻り値を階層ごとに取得します。
#最後に、メイン関数内で直接呼び出します。 #得られる部分的な結果は次のとおりです。アプリケーション 2: クラスのすべての属性を取得する
##呼び出しは、呼び出しメソッドと似ています。
実行結果:
アプリケーション 3: クラスのコンストラクターを取得しますコンストラクターは似ていますが、やはり異なります。
#アプリケーション 4: クラスの特定のメソッドを取得する
実行結果は次のとおりです。2 つの呼び出しメソッドの結果は同じです:
上記は、個々の関数の単なるリストです。さらに具体的な情報については、これは、API ドキュメントで見つけることができます: http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
##リフレクションの概念
記事の最後では、リフレクションの概念を要約し、私たちの考えを昇華させます。リフレクションの定義とは何ですか?
JAVA リフレクション メカニズムでは、実行状態では、どのクラスについても、そのクラスのすべてのプロパティとメソッドを知ることができ、どのオブジェクトについても、そのメソッドのいずれかを呼び出すことができます。オブジェクトのメソッドを動的に取得して呼び出す機能をJava言語のリフレクション機構といいます。反省は必要ですか?
「リフレクション メカニズムは、多くの Java フレームワークの基礎です。」 (1) XML ファイルまたはプロパティに構成を記述し、XML ファイルまたは Java クラスのプロパティの内容を解析して文字列を取得し、リフレクション メカニズムを使用して、以下に基づいて特定の文字列を取得します。この文字列はクラスのクラス インスタンスなので、何かを動的に構成できます。毎回コードに新しいものを追加したり、他のことを行う必要はありません。将来変更したい場合は、構成を直接変更できます。ファイルを作成すると、コードのメンテナンスが非常に便利になります。 (2) 特定のニーズを満たすために、Java クラス内の他のメソッドを直接呼び出すことができない場合がありますが、このときはリフレクション メカニズムを通じて実現することもできます。リフレクションのデメリットは?
コードを見ると、リフレクションされたコードは通常の呼び出しコードよりも多くのコードがあり、パフォーマンスが低下していることがわかります。そのため、リフレクションの使用は避けるべきです。これは、ハサミの場所がすでにわかっている場合、針と糸、ミシン、箱ハサミという経路をたどる必要がないのと同じです。リフレクションを使用するかどうかの基準は何ですか?
関数がリフレクションなしで完了できる場合は、その関数を使用しないのが最善です。 php 中国語 Web サイト、無料のJava 入門チュートリアル が多数あり、オンラインで学習することを歓迎します。
以上がJavaリフレクションとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。