注釋有3中基本類型
a.标記注釋 --沒有變量,隻有名稱辨別。例如 @annotation
b.單一值注釋 --在标記注釋的基礎上提供一段資料。如 @annotation(“data”)
c.完整注釋 --可以包括多個資料成員,每個資料成員由名稱和值構成。
@annotation(val1="data1",val2="data2")
2.Java的“注釋”
Java中提供3個内置注釋類型
a. Override ,隻能用于方法(不能用于類,包聲明或者其他構造)
作用:可以保證編譯時候Override函數的聲明正确性
用法:@Override
public void fun(){..}
b.Deprecated 同樣隻能作用與方法
作用:對不應再使用的方法進行注解
用法:@Deprecated public void fun{...} //它們說這個注釋跟函數要同一行
c.SupressWarnings 可以注釋一段代碼
作用:關閉特定的警告資訊,例如你在使用泛型的時候未指定類型
用法: @SupressWarnings(value={"unchecked"})
..代碼
Java中還提供了四種元注釋,專門負責注釋其他的注釋
@Target 表示該注釋可以用于什麼地方。可用的ElementType參數包括:
CONSTRUCTOR : 構造器的聲明
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.簡單的注釋類型
package com.oreilly.tiger.ch06;
public @interface InProgress { }
ii.使用定制的注釋類型
@com.oreilly.tiger.ch06.InProgress
public void calculateInterest(float amout,float rate)
{
//Need to finish this method later
}
iii.添加成員
package com.oreilly.tiger.ch06;
public @interface InProgress {
String value();
}
@com.oreilly.tiger.ch06.InProgress
@TODO("Figure out the amount of interest per month")
//或者@TODO(value="Figure out the amount of interest per month")
public void calculateInterest(float amount,float rate)
{
}
iv.設定預設值
package com.oreilly.tiger.ch06;
public @interface GroupTODO {
public enum Serverity { CRITICAL,IMPORTANT,IRIVIAL,DOCMENTATION };
Severity severity()
default Severity.IMPORTANT;
String item ();
String assignedTo();
String dateAssigned();
}
}
v.使用預設值
@com.oreilly.tiger.ch06.InProgress
@GroupTODO(
item="Figure out the amount of interest per month",
assignedTo = "Brett McLaughlin",
dateAssigned = "08/04/2004"
)
public void calculateInterest(float amount, float rate)
{
//Need to finish this method later
}
vi.改寫預設值
@com.oreilly.tiger.ch06.InProgress
@GroupTODO
{
severity = GroupTODO.Severity.DOCUMENTATION,
item = "Need to explain how this rather unusal method works",
assignedTo = "Jon Stevens",
dateAssigned = "07/30/2004"
}
轉至:http://javaopen.iteye.com/blog/645915