W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
注釋類型中的元素的數(shù)據(jù)類型可以是任何基本數(shù)據(jù)類型:byte,short,int,long,float,double,boolean和char。
Version注釋類型聲明兩個(gè)元素,major和minor,并且都是int數(shù)據(jù)類型。
以下代碼聲明了注釋類型:
public @interface MyAnnotation { byte a(); short b(); int c(); long d(); float e(); double f(); boolean g(); char h(); }
@MyAnnotation(a=1, b=2, c=3, d=4, e=12.34F, f=1.89, g=true, h="Y")
我們可以使用編譯時(shí)常量表達(dá)式來(lái)指定注釋元素的值。
以下兩個(gè)版本注釋實(shí)例有效:
@Version(major=2+1, minor=(int)13.2) @Version(major=3, minor=13)
我們可以在注釋類型中使用String類型的元素。
以下代碼定義了名為Name的注釋類型。它有兩個(gè)元素,first和last,它們是String類型。
public @interface Name { String first(); String last(); } @Name(first="Tom", last="Smith") public class NameTest { @Name(first="Jack", last="Iaan") public void aMethod() { } }
在String類型的元素的值表達(dá)式中使用字符串連接運(yùn)算符+是有效的。
@Name(first="Ja" + "ck", last="Ia" + "an")
以下代碼顯示如何使用類類型作為注釋值。
import java.io.IOException; @interface MyAnnotation { Class<? extends Throwable> willThrow() default java.lang.Throwable.class; } public class Main { @MyAnnotation(willThrow = IOException.class) public static void testCase1() { // Code goes here } @MyAnnotation() public static void testCase2() { } }
注釋可以具有枚舉類型的元素。
enum Level { PENDING, FAILED, PASSED; } @interface Review { Level status() default Level.PENDING; String comments() default ""; } @Review(status = Level.PASSED) public class Main { }
我們可以使用注釋類型作為另一個(gè)注釋類型的聲明內(nèi)的元素的類型。
要為注釋類型的元素提供值,請(qǐng)使用用于創(chuàng)建注釋類型實(shí)例的語(yǔ)法。
@interface Name { String first(); String last(); } @interface Version { int major(); int minor() default 0; // zero as default value for minor } @interface Description { Name name(); Version version(); String comments() default ""; } @Description(name = @Name(first = "Tom", last = "Smith"), version = @Version(major = 1, minor = 2), comments = "Just a test class") public class Main { }
注釋可以具有數(shù)組類型的元素。數(shù)組類型可以是以下類型之一:
我們需要在大括號(hào)中指定數(shù)組元素的值。
數(shù)組的元素由逗號(hào)分隔。
@interface ItemList { String[] items(); } @ItemList(items = { "A", "B" }) public class Main { }
如果數(shù)組中只有一個(gè)元素,則允許省略括號(hào)。
@ToDo(items={"A"}) @ToDo(items="A")
傳遞一個(gè)空數(shù)組
@ToDo(items={})
假設(shè)我們有一個(gè)注釋類型如下。
public @interface Enabled { boolean status() default true; }
要使用帶有默認(rèn)值的Enabled注釋類型注釋程序元素,我們可以使用@Enabled()語(yǔ)法。
我們不需要為status元素指定值,因?yàn)樗哂心J(rèn)值。
我們可以進(jìn)一步省略括號(hào)。
@Enabled public class Main { } @Enabled() public class Main { }
只有一個(gè)元素的注釋類型具有速記語(yǔ)法。
如果注釋類型只有一個(gè)具有命名值的元素,我們可以省略name = value對(duì)中的名稱。
以下代碼聲明了公司注釋類型,它只有一個(gè)名為value的元素:
public @interface Company { String value(); }
當(dāng)使用公司注釋時(shí),我們可以省略name = value對(duì)的名稱。
@Company(value="Inc.") public class Test { }
變成
@Company("Inc.") public class Test { }
以下代碼顯示了如果元素?cái)?shù)據(jù)類型是數(shù)組,如何使用此縮寫。
public @interface Item { String[] value(); } @Item({"A", "B"}) public class Test { }
如果我們?cè)跀?shù)組注釋類型中只指定一個(gè)元素,我們可以進(jìn)一步省略大括號(hào)。
@Item("A") public class Test { }
如果我們?cè)跀?shù)組注釋類型中只指定一個(gè)元素,我們可以進(jìn)一步省略大括號(hào)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: