注釈
1。注釈とは何ですか? (注釈またはコメント)
注釈、正確な翻訳は - 注釈です。コメントとはまったく異なります。
注釈は、JDK5.0以降のバージョンによって導入された機能です。クラス、インターフェイス、列挙と同じレベルであり、Javaの一種になる可能性があります。
構文は @で始まります
コメントは、ソースコードのクラス、メソッド、プロパティなどのプログラマーが作成したいくつかの暗記または迅速な説明(この方法が使用されるものなど)であり、人々が見ることができます。
注釈は、Javaコンパイラが理解できる部分であり、コンパイラが見ることができます。
注釈の使用と機能を確認するための簡単な例を見てみましょう。
@Overrideは、一般的なJava組み込みの注釈です。その機能は、サブクラスで定義されているメソッドがコードをコンパイルするときに正しいかどうかを確認することです。
パッケージアノテーション;パブリックアブストラクトクラスアニマル{public abstract void eat(); }パッケージannotation;パブリッククラスの猫は動物を拡張します{@override public void eat(string food){}}ここで、サブクラス猫では、EATメソッドは親クラスを上書きする方法として注釈が付けられていますが、親クラスの方法よりも1つのパラメーターがあります。
Eclipseで編集している場合、赤十字のプロンプトがあります。 (コードコンパイルは渡されません)。
@Overrideアノテーションを削除する場合、コンパイルに問題はありませんが、CATのEATメソッドは、親クラスから継承されていないこのクラスの新しい方法です。
2。一般的なJavaビルトイン注釈
@Overrideを含む、他に一般的なJavaビルトイン注釈は何ですか?
1。 @deprecated
注釈は推奨されず、メソッドとクラスで使用できます。
基本的に、この方法とクラスは放棄され、アップグレードやパフォーマンスなどのいくつかの理由で推奨されませんが、互換性やその他の理由で保持する必要があります。
だからこの注釈を置いてください。
Java自体APIにはそのような例がたくさんあります。このアノテーションをメソッドに掲載すると、どの新しい代替方法が表示されますか。
Eclipseでコードを書くとき、この注釈を追加する方法は、宣言と呼び出しの両方にストリケスルーを追加します。
2.@Override
3.@SuppressWarnings
警告を無視します。
コードが変換または他の部分にいくつかの警告があるが、これらの警告を無視する場合は、この注釈を使用できます。
1)非推奨が好まれないクラスまたは方法を使用する場合の警告
2)チェックされていない変換が実行されたときの未チェック警告
3)フォールスルー警告は、ケースの使用後にブレーク操作が追加されないときに表示され、プログラムは他のケースステートメントを引き続き実行し続けます
4)誤ったクラスパスまたはソースファイルパスを設定するときのパス警告
5)SerialVersionionuid定義がシリアル化可能なクラスで欠落している場合
6)最終的に条項が正常に完了できない場合はfianally警告
7)上記のすべての状況に関するすべての警告
3。カスタムアノテーション
Java自体が提供する内蔵注釈に加えて、Javaはカスタムアノテーションをカスタマイズする機能も提供します。
注釈を定義する方法は、注釈を使用して注釈を定義することです。注釈を定義するために使用される注釈は、メタアノテーションと呼ばれます。
主なメタアノテーションは次のとおりです。@target; @保持; @documented; @inherited
1。@targetは、注釈がどこで使用されているかを示し、クラス、方法、または属性で使用できます。可能なELEMENETTYPEパラメーターは次のとおりです。
ElemenetType.Constructor Constructor宣言
ElemenetType.Fieldドメイン宣言(列挙インスタンスを含む)
elemenettype.local_variableローカル変数宣言
ElemenetType.Methodメソッド宣言
ElemenetType.Packageパッケージステートメント
ElemenetType.Parameterパラメーター宣言
ELEMENETTYPE.TYPEクラス、インターフェイス(注釈タイプを含む)または列挙宣言
2。@retentionは、注釈情報を保存するレベルを示します。オプションの保持パラメーターには次のものがあります。
RetentionPolicy.Sourceアノテーションは、コンパイラによって破棄されます
retentionPolicy.classアノテーションはクラスファイルで利用できますが、VMによって破棄されます。
RetentionPolicy.Runtime VMは、ランタイム中にコメントを保持するため、注釈情報は反射メカニズムを通して読み取ることができます。
3。@documented、この注釈を生成するときにこの注釈を含めるかどうかは、Javadocにこの注釈を含めます
4。@inherited
サブクラスが親クラスの注釈を継承してもらいましょう。いくつかの簡単な定義の例を参照してください。
パッケージアノテーション; java.lang.annotation.documentedをインポートします。 java.lang.annotation.ElementTypeをインポートします。 java.lang.annotation.inheritedをインポートします。 java.lang.annotation.retentionをインポートします。 java.lang.annotation.retentionPolicyをインポートします。 java.lang.annotation.targetをインポートします。 @Target(elementType.Method)public @interface myannotation {string value(); } @retention(RetentionPolicy.Source)@interface myannotation1 {} @retention(retentionpolicy.class)@interface myannotation2 {} @retention(retentionPolicy.runtime)@interface myannotation3 {} @documented @interface bymynotation5 {} @inherface4。例を使用してください:
パッケージアノテーション; Java.lang.Annotation.Annotationをインポートします。 @myannotation3 public class testannotation {public static void main(string [] args){// todo auto-fenated method stub annotation annotation = testannotation.class.getannotation(myannotation3.class); System.out.println(annotation.toString()); }}結果を印刷: @annotation.myannotation3()
上記の例でmyannotation1とmyannotation2が置き換えられている場合、得られた注釈の値は空であり、これが保持ポリティの違いです。
V.注釈の役割
この時点で、注釈の役割を要約できます。
基本は、3つのカテゴリにほぼ分割できます。
1。ドキュメントを書きます
2。コード分析
3.コンピレーションチェックただし、オープンソースフレームワークは、次のようなより多くの機能を提供します。
冬眠、注釈構成、
@column( "aa")private string xx;
これはXML構成に似ており、プログラムの構成を簡素化し、メタデータの一部をXMLファイルからコード自体に移動し、1か所で管理および維持します。
内部でどのように実装されていますか? - 上記の例と同様に、Java反射メカニズム。
コメント
アノテーションとコメントは1つの単語とは異なりますが、使用法は非常に異なります。
同じ文が当てはまります。注釈はコンパイラが見るためのものであり、注釈は人々が見ることができます。
これに基づいて、方法については:
1.この方法の機能を明確に説明してください。入力と出力を説明してください。著者やバージョンなどの情報を追加できます。
2。美しいコメントの取り決めでこれら2つのことをしてください。例えば:
/******************************************************************************************************************************* **************************************************************K
これは良いメモであるように見えます^^。
しかし、Java言語の場合、コメントにはより多くの機能が与えられます。つまり、Javadoc関数を使用して、コード内のコメントをHTMLファイルにエクスポートできます。
コードが共通性の高いコードの場合、このドキュメントはJava APIと同様のAPIリファレンスドキュメントです。
したがって、このようなドキュメントを生成するには、標準化されたドキュメントを作成するために、Javaによって定義されたいくつかの注釈仕様に従う必要があります。
1。Javaクラスの方法に関する標準コメント
クラス方法に関するコメントから始めましょう。
/***テキストの行を読みます。ラインは、ラインフィード( '/n')、キャリッジリターン( '/r')、またはキャリッジリターン *のいずれか *によって終了すると見なされ、すぐにラインフィードが続きます。 * * @param Ingrorelf1 trueの場合、次の '/n'はスキップされます任意のラインターミネーション文字、または *ストリームの終了に到達した場合、null * * @see java.io.lineNumberreader#readline() * * @exception ioexception i/oエラーが発生した場合 */
(上記のコメントの意味に注意を払わないでください。その定義のスタイルに焦点を当てるだけです)
1.最初に「テキストの行を読む。行..」を見てください。この段落は、この方法の説明です。
「テキストの行を読む」という最初の期間の前の部分。 「メソッドサマリー」に表示されます
2。@paramは、メソッドの入力パラメーターを定義します。これは、「メソッドの詳細」に表示されます(複数を追加できます)。 (パラメーターとパラメーターの説明はスペースによって分離され、生成されたドキュメントで変換されます)
3。@return返品値の説明
4。@SEE参照説明
5.例外によってスローされた@exceptionの説明は美しいです。 @paramや@returnなど、1つのラインを直接空にするなど、さまざまな種類のタグを1行に表示できます。
2。Javaクラスの標準コメント
クラスの注釈とメソッドアノテーションの形式は基本的に同じです。違いは何ですか:
1.配置は異なります。クラスの注釈はクラスの定義の上に配置され、メソッドアノテーションはメソッド定義の上に配置されます。
2。クラスアノテーション比較では、 @version @author @sinceなどのタグを使用します。
テンプレートを見てください
/**指定されたファイルから入力をバッファリングします。バッファリングなしで、read()またはreadline()の *呼び出しは、 *ファイルからバイトを読み取り、文字に変換してから返します。これは非常に *固有の場合があります。 * *テストの説明 * * <p>テキスト入力にDatainputStreamsを使用するプログラムは、 *各DatainputStreamを適切なBufferedReaderに置き換えることでローカライズできます。 * * @see fileReader * @see inputstreamReader * * @version 0.1、11/20/13 * @author oscar999 * @since jdk1.5 */
docに表示される効果は次のとおりです。
同様に、説明の最初の文は「classary」に表示されます。
クラスの詳細は次のように表示されます。
説明で<P>の使用が使用されることは注目に値します。 <p>が追加されていない場合、Javaコードに新しい行があるかどうかに関係なく、生成されたドキュメントは新しいものではありません。 <p>が追加されると、docに新しい行が表示されます。
3。サプリメント
追加するには、Javadocを生成する方法:
1。名前の指定方法:Javadoc +パラメーター
2. Eclipse IDEを使用してEclipse IDEでエクスポートし、ソースファイルまたはプロジェクトを右クリックして、エクスポートを選択します>
Java-> Javadocを生成できます。