Java注釈とダイナミックエージェントについて説明します。


本文は主にJavaにおける注釈と動的代理に関する一部の知識を紹介します。
Annotation(注)
実はコードの中の特殊なマークで、配置ファイルの代わりに使われています。つまり、従来の方式は配置ファイルを通じてクラスにどうやって実行するかを教えています。
1、三つの基本的なAnnotation:
Override:親の書き方を書き換える方法を限定します。この注釈は方法にしか使えません。
Deprecated:あるプログラム要素(クラス、方法など)が古いことを表します。
Suppres Warnings:コンパイラの警告を抑制します。
2、カスタムAnnotation@interfaceキーワードを使う
プロファイルの情報を設定します。コメントに属性の説明を使用します。
例:

String name();
デフォルトの値を持つ方式:Stering name()default"xxx"
注释属性のタイプは次のタイプのみです。
Stringタイプ、8大基本データタイプ、Classタイプ、列挙タイプ、注釈タイプ、以上のタイプの1次元配列
特殊属性value:もし注釈にvalueという属性があるなら、注釈を使う時はvalue=部分を省略してもいいです。@MyAnnotation("xxx")
特殊属性value[];
3、元AnnotationとはAnnotationを飾るAnnotationのことです。
JDKでは次のように定義されています。
Retention:Annotation定義を修飾するだけで、Annotationが保持できるドメインを指定します。@RentionはRetention Policyタイプのメンバー変数を含み、この変数によりドメインを指定します。
Retension Policy.rass:コンパイラは注釈をclassファイルに記録します。Javaプログラムを実行すると、JVMは注釈を保持しません。これはデフォルトです。
Retension Policy.RUNTIME:コンパイラは注釈をclassファイルに記録します。Javaプログラムを実行すると、JVMは注釈を保持します。プログラムは反射によってこの注釈を取得することができます。
RetentionPolicy.SOURCE:コンパイラは直接このような戦略の注釈を捨てます。
4、@Target:修飾類に対する注釈を指定します。@TargetはvalueというタイプのElemenntTypeのメンバー変数を含んでいます。
@Dcumented:この元Annotationで修飾されたAnnotationクラスを指定するために、javadocツールからドキュメントに抽出されます。
@Inherited:修飾されたAnnotationは継承性があります。もしある種類が@Inheritedによって修飾されたAnnotationを使ったら、そのサブクラスは自動的にこの注釈を持っています。
ダイナミックエージェント
JavaはProxyクラスを提供しており、そのnewInstance方法を呼び出してあるオブジェクトの代理オブジェクトを生成することができます。この方法を使用してプロキシオブジェクトを生成するには、3つのパラメータが必要です。
1.プロキシを生成するには、どのタイプのローダーを使用しますか?
2.どのオブジェクトのプロキシオブジェクトを生成し、インターフェースで指定しますか?
3.生成した代理人の方法で何をするかは、開発者がハンドルインターフェースの実現を作成して指定します。
初心者は理解しなければなりません。または覚えなければならないことが2つあります。
Proxy類は、プロキシオブジェクトの作成を担当する場合、handler(プロセッサ)が指定されていれば、ユーザがプロキシオブジェクトを呼び出す方法にかかわらず、プロセッサを呼び出すinvoke方法である。
invoke方法の呼び出しには3つのパラメータが必要です。プロキシオブジェクト、方法、方法のパラメータは、プロキシオブジェクトのいずれかにかかわらず、プロセッサのinvoke方法を呼び出すためには、自分のいるオブジェクト、自分(invokeメソッドを呼び出す方法)、方法のパラメータを渡さなければなりません。
動的エージェント技術では、ユーザがプロキシオブジェクトを呼び出すいかなる方法にも関わらず、開発者が作成したプロセッサを呼び出すinvoke方法である(これはinvoke方法がプロキシオブジェクトにブロックされた方法呼び出しに相当する)。
また、開発者は、invoke方法のパラメータにより、ブロックしながら、ユーザが呼び出した方法を知ることができるので、この2つの特性を利用して、ユーザのアクセス要求をブロックし、ユーザがアクセス権限があるかどうか、動的にあるオブジェクトに追加の機能を追加することができる。
締め括りをつける
以上が本文のJava注釈と動的代理に関する知識の全部です。Javaプログラムの設計に役立ちたいです。もっと多くのJavaの内容は興味がある友達が読むことができます。Java反射メカニズムについて知っておく必要があります。ibatis学習の構築JavaプロジェクトJavaプログラミング思想オブジェクトの収容例の詳細などです。
皆さん、当駅を応援してくれてありがとうございます。