Java アノテーション - Java 独自の構成ファイル

向前冲!
リリース: 2022-01-07 13:41:51
オリジナル
2177 人が閲覧しました

著者からのメッセージ

皆さんこんにちは。これが私の最初の記事です。私が学んだ知識を要約して皆さんと共有したいと思います。次の期間に皆さんにも共有したいと思います。一連の JavaPython、およびその他の エントリーレベル 関連記事を体系的に共有して、強固な基礎を築いてさらに先に進むことができます。みなさんもアドバイスをいただければ幸いです!早速、実践的な内容に移りましょう。 (侵害が含まれている場合は、削除するためにこのプラットフォームを通じて私に連絡してください)

序文

設定ファイルとしての XML は、以下のユーザーの間で人気があります。しかし、ほとんどのプログラマーはアノテーションを使用することを好む人もいます。実際、私は個人的には、その選択は重要ではないと感じています。重要なのは、それぞれのテクノロジーの誕生の本質を理解することです。構成ファイルおよびコードとしての XML は「大まかに言うと、 「結合された」コード記述ですが、XML 構成ファイルが多すぎると管理が困難になります。同時に、IDE は XML 構成ファイルの正確性を検証できず、テストの難易度が高くなります。アノテーションは「緊密に」記述されます。この目的は、「ゼロ」構成でありながら、アプリケーションの拡張を容易にすることです。

1. アノテーションとは

アノテーションとは、コード内のメタデータ(メタデータ:データを説明するデータ)であるアノテーションのことで、プログラム開発者はアノテーションを利用することで、元のロジックを変更せずに、ソース ファイルに補足情報を埋め込みます。次のコード スニペットを見てください:

Java アノテーション - Java 独自の構成ファイル

実際、初心者にとっては、同様のコードを見て、@Override とは一体何だろうと疑問に思うことがよくあります。 @Override を toString() メソッドに追加するということは、アノテーションの下の toString() メソッドが親クラスのメソッドを再構築する必要があることを意味します。

これを見て、次はいろいろなアノテーションを紹介しようと思う人もいるのでは? !私はしません!

2. アノテーション型の文法標準

アノテーションは Java における特殊な型であり、次にアノテーション型の設計方法を見てみましょう。

1. 文法標準:

public   @interface   注解类型名称
{
    [   数据类型    变量名 ()    [   default  初始值   ];   ]
}
ログイン後にコピー

注:

1) 「[ ]」内の内容はオプションであり、注釈が空の場合は、現在の注釈を意味しますロゴに注釈を付けます。

2) アノテーションには変数をインテリジェントに含める必要があり、メソッドを含めることはできません。

3) アノテーションはコード内の特別なマークであり、単独で使用することはできず、クラスまたはインターフェイスと組み合わせて使用​​する必要があります。

4) アノテーション タイプを使用して、プログラム要素 (プログラム要素: クラス、メソッド、メンバー変数など) のメタデータを設定できます。

2. ケース: アノテーション タイプを Testable として設計し、このアノテーションによって識別されるメソッドはテスト可能なメソッドです。注釈は内部的には空であり、注釈が識別注釈であることを示します。

public  @interface  Testable
{
}
ログイン後にコピー
public class Test

{

      @Testable

       public void info()

      {

              System.out.println(“我是info方法”);

      }

      public void info1()

      {

              System.out.println(“我是info1方法”);

      }

}
ログイン後にコピー

@Testable 注釈は、info メソッドが実行可能メソッドであることを示すために、このクラスに追加されます。この注釈は、メソッドが実行可能メソッドであることのみを記述しており、動的な対話機能はありません。このアノテーションの機能を実現するには、サポートする Java アプリケーションを作成する必要があります。具体的なコードについては、次のコードを参照してください。

考えてみてください。クラスの内部構造を解析したい場合、それを実現するにはどのようなテクノロジを使用できるでしょうか?

答えは、リフレクションの仕組みです (次の段落のリフレクションの仕組みがよくわからないという方は、以下のコードに従ってデバッグしてください。リフレクションの仕組みについての具体的な知識は後ほど公開します)。

java.lang.reflect パッケージ内のリフレクション機能を持つ共通ツール クラス: Method (メソッド クラス)、Field (フィールド クラス)、Constructor (コンストラクター メソッド クラス) など。

上記のツール クラスは、ランタイム アノテーションを読み取る機能を拡張します。つまり、java.lang.annotation.AnnotatedElement インターフェイスを実装します。このインターフェイスは、すべてのプログラム要素の親インターフェイスであり、このインターフェイスは、プログラム要素を取得するための関数を提供します。注釈情報関連のメソッド。

  • #getAnnotation(Class annotationClass): プログラム要素の指定されたタイプの注釈を返します。このタイプの注釈が存在しない場合は、null を返します

  • Annotation [] getAnnotations(): プログラム要素に存在するすべての注釈を返します。

  • Annotation はすべてのアノテーションの親インターフェイスです。デフォルトでは、どのインターフェイス タイプでもこのインターフェイスが実装されます。

  • boolean isAnnotationPresent(Class annotationClass): プログラム要素に指定されたタイプの注釈が含まれているかどうかを判断します。存在する場合は true を返し、存在しない場合は false を返します。

コード リファレンス:

Test クラスを解析し、@Testable でマークされたメソッドを実行します。

import java.lang.reflect.Method;
public class UseTest
{
        public static void main(String[] args)throws Exception
        {
                  Class c=Class.forName(“Test”);
                  Object o=c.newInstance();
                  Method[] me=c.getDeclaredMethods();
                  for(Method temp:me)
                  {
                           if(temp.isAnnotationPresent(Testable.class))
                                   temp.invoke(o,new Object[0]);
                  }
         }
}
ログイン後にコピー
わかりました。プログラムを実行して効果を確認できます。


。 。 。 。 。 。 。

特に絶句じゃないですか(ˉ▽ˉ;)…, 実際にコードを実行してみると、思っていたのと違って何も結果が出ていないことが分かりますね。 !

次回の内容を知りたい場合は、次回の内訳を読んでください。

3. まとめ:

次に、友達がマスターする必要がある知識ポイントをまとめてみましょう。

1. XML とアノテーションの違い

2. アノテーションとは

3. アノテーション設計の文法標準

4. 反映メカニズム

5. java.lang.annotation.AnnotationElement のメソッドと関数

4. まとめ

急いで終わった理由をお話します初めて記事を書くとき、どのような内容になるか分かりませんが、残りの関連知識については次の記事を読んでください。

以上がJava アノテーション - Java 独自の構成ファイルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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