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")
Class類型
以下代碼顯示如何使用類類型作為注釋值。
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í)例的語法。
@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ù)組類型的元素。數(shù)組類型可以是以下類型之一:
原始類型
java.lang.String type
java.lang.Class type
枚舉類型
注釋類型
我們需要在大括號(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;
}
更多建議: