鍍金池/ 教程/ Java/ Java注解
Java參數(shù)傳遞
Java靜態(tài)內(nèi)部類
Java final關(guān)鍵字
http://www.yiibai.com/java_object_oriented_design/java_inheritan
Java泛型類
Java標(biāo)準(zhǔn)注解
Java接口教程
Java注解
Java枚舉類型
http://www.yiibai.com/java_object_oriented_design/java_class_ins
Java接口實(shí)現(xiàn)
Java哈希編碼
Java泛型約束
http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java注解默認(rèn)值
Java異常拋出
Java不可變對(duì)象
Java類基礎(chǔ)
Java接口繼承
Java類方法
Java訪問(wèn)級(jí)別
Java對(duì)象克隆
Java初始化塊
Java可變長(zhǎng)度參數(shù)
Java接口字段
Java對(duì)象相等比較(Equals)
Java實(shí)例和靜態(tài)方法
Java繼承方法隱藏(覆蓋)
Java面向?qū)ο笤O(shè)計(jì)
Java對(duì)象finalize()方法
Java抽象類和方法
Java Object類
Java泛型方法和構(gòu)造函數(shù)
Java枚舉體
Java接口方法
Java this關(guān)鍵字
Java注解類型的限制
Java main()方法
Java Enum類
Java注解用法
Java枚舉比較
Java注解類型
Java內(nèi)部類成員
Java繼承和構(gòu)造函數(shù)
Java類實(shí)例化
Java內(nèi)部類類型
Java對(duì)象toString()方法
Java finally塊
Java繼承教程
Java自定義異常
Java枚舉值
Java接口作為類型
Java異常類
Java方法覆蓋教程
http://www.yiibai.com/java_object_oriented_design/java_class_bas
Java枚舉方法
Java方法重載
http://www.yiibai.com/java_object_oriented_design/java_interface
Java異常用法
Java內(nèi)部類
Java類成員訪問(wèn)級(jí)別
Java異常處理教程
Java注解反射
Java構(gòu)造函數(shù)(構(gòu)造器)
Java導(dǎo)入(import語(yǔ)句的用法)

Java注解

Java注解是什么?

在Java中的注解允許將元數(shù)據(jù)與程序元素相關(guān)聯(lián)。
程序元素可以是包,類,接口,類的字段,局部變量,方法,方法的參數(shù),枚舉,注解,通用類型/方法聲明中的類型參數(shù)等等。

可以在Java程序中注解任何聲明或類型。注解在任何其他修飾符(public,private,final,static等)的程序元素的聲明中用作修飾符。與修飾符不同,注解不會(huì)修改程序元素的含義。它是程序元素的注解。

聲明注解類型

聲明注解類型類似于聲明接口類型。注解類型是一種特殊類型的接口類型。使用前面帶有@符號(hào)的interface關(guān)鍵字來(lái)聲明注解類型(注意與聲明接口的區(qū)別)。
以下是聲明注解類型的一般語(yǔ)法:

<modifiers> @interface <annotation-type-name>  {
    // Annotation type body
}

注解聲明的<modifiers>修辭符與接口聲明的相同??梢詫⒆⒔忸愋吐暶鳛閜ublic或package級(jí)別。@符號(hào)與interface關(guān)鍵字之間可以用空格分隔,也可以連接在一起。按照慣例,它們一般是連接放在一起,如:@interface。interface關(guān)鍵字后面是注解類型名稱。 它應(yīng)該是有效的Java標(biāo)識(shí)符。

注解類型正文放在大括號(hào)中。以下代碼創(chuàng)建注解以使用版本信息注解程序元素。

public  @interface  Version {
    int  major();
    int  minor();
}

在上面代碼中的Version注解類型中聲明了兩個(gè)抽象方法:major()和minor()。注解類型中的抽象方法稱為元素。注解可以聲明零個(gè)或多個(gè)元素,它們被聲明為抽象方法。抽象方法名稱是注解類型的元素的名稱。
在上面的代碼中,Version注解類型聲明了兩個(gè)元素:major和minor。 兩個(gè)元素的數(shù)據(jù)類型都是int。

如果要導(dǎo)入一個(gè)注解類型,那么它應(yīng)該就像導(dǎo)入任何其他類型一樣。

注解實(shí)例

要?jiǎng)?chuàng)建注解類型的實(shí)例并使用它來(lái)注解程序元素,使用以下語(yǔ)法:

@annotationType(name1=value1,  name2=value2, names3=values3...)

注解類型前面帶有一個(gè)@符號(hào),后面是用括號(hào)括起來(lái)的逗號(hào)分隔的name = value對(duì)列表。name = value對(duì)中的名稱是在注解類型中聲明的元素的名稱和值,它由用戶提供。name = value對(duì)不必按照在注釋類型中聲明的順序出現(xiàn)。
以下代碼使用Version類型的注解,主要元素值設(shè)置為1(major=1),次要元素值設(shè)置為0(minor=0)。

@Version(major=1, minor=0)

也可以使用注釋類型的完全限定名,如下代碼 -

@com.java2s.annotation.Version(major=0,  minor=1)

可以將類聲明注釋為 -

@Version(major=1, minor=0)
public  class  VersionTest {

}

可以將程序元素的注釋與其他修飾符混合使用。

@Version(major=1, minor=0)  public  class  VersionTest {
}

public  @Version(major=1, minor=0)  class  VersionTest {
}

完整的源代碼

@interface Version {
  int major();

  int minor();
}

@Version(major = 1, minor = 0)
public class Main {
  @Version(major = 1, minor = 1)
  private int xyz = 110;

  @Version(major = 1, minor = 0)
  public Main() {
  }

  @Version(major = 1, minor = 1)
  public Main(int xyz) {
    this.xyz = xyz;
  }

  @Version(major = 1, minor = 0)
  public void printData() {
  }

  @Version(major = 1, minor = 1)
  public void setXyz(int xyz) {

    @Version(major = 1, minor = 2)
    int newValue = xyz;

    this.xyz = xyz;
  }
}