JAVAのリフレクション機構

高洛峰
リリース: 2016-12-12 11:40:47
オリジナル
1263 人が閲覧しました

常々反射的に、何かの情報を見たことがある時によく聞いたり、デザインモードで使ったりしていたのですが、まだ深く理解できていない気がするので、今回改めて勉強しました。それは大丈夫です!


、まずリフレクションの概念を見てください:

は主に、プログラムにアクセスし、自身の状態や動作を検出および変更し、そのステータスと結果に従ってアプリケーションを調整または変更する機能を指します。アプリケーション自身の動作、調整または変更 記述された動作の状態および関連するセマンティクス。

リフレクションは、コンポーネント間でソースコードをリンクする必要がある。しかし、リフレクションを不適切に使用すると、非常に高いコストがかかる可能性があります。晕 概念を見て、非常にめまいがして、下を見続けます。

2. リフレクション メカニズムの役割:

1. 逆コンパイル: .class-->.java

2. リフレクション メカニズムを通じて Java オブジェクトのプロパティ、メソッド、構築メソッドなどにアクセスします。

このように見えます。これらの機能を詳細に実装する方法を見てみましょう。次に、これらのリフレックス メカニズムのカテゴリを見てみましょう。

java.lang.reflet.conStructor; ;

java.lang.reflect.Modifier;


これら 4 つのクラスからのリフレクションで、多くのメソッド、属性、その他の操作をクエリできます。それとも、常に API をクエリする方法を学ぶべきでしょうか。それが私たちの最良の教師です。 culy -d downを使用して使用して使用します。
//第一种方式:  
Classc1 = Class.forName("Employee");  
//第二种方式:  
//java中每个类型都有class 属性.  
Classc2 = Employee.class;  
   
//第三种方式:  
//java语言中任何一个java对象都有getClass 方法  
Employeee = new Employee();  
Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)
ログイン後にコピー

3.すべての属性と指定された属性に分割されます。特定の属性を取得し、従来の方法と比較して学習します:

[java] view plain copy
 print?
Class c =Class.forName("Employee");  
  
//创建此Class 对象所表示的类的一个新实例  
Objecto = c.newInstance(); //调用了Employee的无参数构造方法.
ログイン後にコピー

4. 取得方法と構築方法については詳しく説明しません: キーワードを見てください:

このようにして、さまざまなコンテンツを取得できます。クラスを削除して逆コンパイルします。最初にコンパイルしてから実行する JAVA のような言語の場合、リフレクション メカニズムによりコードがより柔軟になり、オブジェクト指向の実装が容易になります。


5.リフレクションと構成ファイルは、私たちのプログラムをより柔軟にしますそれをコピーしました。 .NET でのリフレクション + 構成ファイルの使用を見てください:

当時使用された構成ファイルは app.config ファイルで、内容は XML 形式で、リンク データベースの内容が埋められていました。たとえば、システム データベースを SQL Server から Oracle にアップグレードする場合、2 つの D レイヤーを作成し、構成ファイルの内容を変更するか、選択するための条件を追加するだけで、データベースを変更することが非常に簡単になります。それは大きな利便性をもたらします。 J もちろん、Java でも同じことが当てはまりますが、ここでの設定ファイルは属性ファイルと呼ばれます。内省を通じて中身を読んでください。このようにして、コードは修正されますが、構成ファイルの内容は変更できるため、コードがより柔軟になります。

要約すると、JAVA リフレクションを再学習して柔軟に使用すると、コードをより柔軟にすることができますが、欠点もあります。つまり、JAVA リフレクションを使用するとパフォーマンスが低下し、ソフトウェアの複雑さが増すため、次のことを行う必要があります。それは慎重に。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート