Javaメタデータのまとめ:Javaコメントの使用と定義

10067 ワード

メタデータは、「データに関するデータ」です.Javaメタデータには3つの基本タイプがあり、Java内蔵コメントタイプが3つあり、4つの中元コメントタイプもあります.本文はそれについて紹介と総括を行う.
メタデータはmetadataという言葉から訳され、「データに関するデータ」という意味です.ますますオープンソースフレームワークでは、メタデータのサポートが提供されています.つまり、コメントのサポートです.今日システムはJava注釈(Javaメタデータ)を勉強します.この文書の内容はJavadocのコメントに限定されません.
1.Javaメタデータとは何ですか.
メタデータは、「データに関するデータ」です.機能もいろいろありました.Javadocのコメントでドキュメントを自動的に生成したことがあるかもしれません.これがメタデータ機能の一種です.総じて、メタデータは、既存のプロファイルの代わりに、ドキュメントを作成したり、コードの依存性を追跡したり、コンパイル時のフォーマットチェックを実行したりするために使用できます(Hibernateなどの注釈構成も提供されています).
注記3の基本タイプ
a.タグコメント      --変数はなく、名前IDのみです.例えば@annotationb.単一値コメント    --タグコメントに基づいてデータを指定します.@annotation("data")c.完全コメント      --複数のデータ・メンバーを含めることができ、各データ・メンバーは名前と値で構成されます.@annotation(val1="data1",val2="data2")
2.Javaの「コメント」
Javaには3つの組み込みコメントタイプが用意されています
a.Override、メソッド(クラス、パッケージ宣言またはその他の構造に使用できない)の役割にのみ使用できます:コンパイル時のOverride関数の宣言の正確性を保証できます使用法:@Overridepublic void fun(){..}
b.Deprecated  同様に方法と作用することしかできません:再使用すべきでない方法に対して注釈を行います:@Deprescated public void fun{...}//それらはこの注釈と関数が同じ行を要すると言います
c.SupressWarningsはコードの役割を注釈することができます:特定の警告情報を閉じます.例えば、汎用型を使用するときにタイプの使い方を指定していません:@SupressWarnings(value={"unchecked"})..コード
Javaには4つのメタ注釈が用意されており、他の注釈の注釈を専門に担当しています.
@Target   このコメントがどこで使用できるかを示します.使用可能なElementTypeパラメータには、CONTRUCTOR:コンストラクタの宣言FIELD:ドメイン宣言(enumインスタンスを含む)LOCAL_が含まれます.VARIABLE:局所変数宣言METHOD:メソッド宣言PACKAGE:パッケージ宣言PARAMETER:パラメータ宣言TYPE:クラス、インタフェース(注釈タイプを含む)またはenum宣言
@Retentionは、アノテーション情報をどのレベルで保存する必要があるかを示します.オプションのRetentionPoicyパラメータには、SOURCE:アノテーションはコンパイラによって破棄されますCLASS:アノテーションはclassファイルで使用可能ですが、VMによって破棄されますRUNTIME:VMは実行時にもアノテーションを保持します.したがって、アノテーションの情報は反射メカニズムで読み取ることができます.
@Documented JavaDocにコメントを含める
@Inheried  子クラスが親クラスのコメントを継承できるようにします.
3.Javaで自分のコメントを定義する
Java言語は新しいタイプであるアノテーションタイプ(annotation type)をサポートし、通常のクラスと差が少なく、クラス内で他のJavaコードを記号(@)でアノテーションする
以下では簡単な例で実現する(コードはBrett McLaughlin)@interface申明
i.簡単なコメントタイプ

  
    
  1. package com.oreilly.tiger.ch06;  
  2. /**  
  3.  * Marker annotation to indicate that a method or class  
  4.  * is still in progress.  
  5.  */ 
  6. public @interface InProgress { }  

ii.カスタムコメントタイプを使用する

  
    
  1. @com.oreilly.tiger.ch06.InProgress  
  2. public void calculateInterest(float amout,float rate)  
  3. {  
  4.       //Need to finish this method later  
  5. }  

iii.メンバーの追加

  
    
  1. package com.oreilly.tiger.ch06;  
  2. /**  
  3.  * Marker annotation to indicate that a method or class  
  4.  * is still in progress.  
  5.  */ 
  6. public @interface InProgress {  
  7.   String value();   
  8.  }  
  9.  
  10. @com.oreilly.tiger.ch06.InProgress  
  11. @TODO("Figure out the amount of interest per month")  
  12. // @TODO(value="Figure out the amount of interest per month")  
  13. public void calculateInterest(float amount,float rate)  
  14. {  
  15. }  
  16.  

iv.デフォルト値の設定

  
    
  1. package com.oreilly.tiger.ch06;  
  2. public @interface GroupTODO {  
  3.   public enum Serverity { CRITICAL,IMPORTANT,IRIVIAL,DOCMENTATION };  
  4.   Severity severity()  
  5.           default Severity.IMPORTANT;  
  6.   String item ();  
  7.   String assignedTo();  
  8.   String dateAssigned();  
  9. }  
  10. }  

v.デフォルト値の使用

  
    
  1. @com.oreilly.tiger.ch06.InProgress  
  2. @GroupTODO(  
  3.  item="Figure out the amount of interest per month",  
  4.  assignedTo = "Brett McLaughlin",  
  5.  dateAssigned = "08/04/2004" 
  6. )  
  7.  
  8. public void calculateInterest(float amount, float rate)  
  9. {  
  10.    //Need to finish this method later  
  11. }  
  12.  

vi.デフォルト値の上書き

  
    
  1. @com.oreilly.tiger.ch06.InProgress  
  2. @GroupTODO 
  3. {  
  4.    severity = GroupTODO.Severity.DOCUMENTATION,  
  5.    item = "Need to explain how this rather unusal method works",  
  6.    assignedTo = "Jon Stevens",  
  7.    dateAssigned = "07/30/2004" 

これでJavaメタデータ/Javaコメントをまとめました.