Java注解
外观
Java 标注是Java语言5.0版本开始中加入源代码的特殊语法元数据[1]。
Java语言中的类、方法、变量、参数和包等都可以被标注。Java标注和Javadoc不同,标注有自反性。在编译器生成类文件时,标注可以被嵌入到字节码中,由Java虚拟机执行时获取到标注[2]。
实例
// @Twizzle标注toggle()方法。
@Twizzle
public void toggle() {
}
// 声明Twizzle标注
public @interface Twizzle {
}
标注可以包括一个关键字和值的对构成的列表:
//等同于 @Edible(value = true)
@Edible(true)
Item item = new Carrot();
public @interface Edible {
boolean value() default false;
}
@Author(first = "Oompah", last = "Loompah")
Book book = new Book();
public @interface Author {
String first();
String last();
}
标注声明中可以用标注说明使用方式、时间和对象:
@Retention(RetentionPolicy.RUNTIME) // 该标注可以在运行时通过反射访问。
@Target({ElementType.METHOD}) // 该标注只用于类内方法。
public @interface Tweezable {
}
编译器保留一组标注用于特定语法目的 (包括 @Deprecated, @Override和@SuppressWarnings等)。
参考引用
- ^ JDK 5.0 开发者指南:标注. Sun Microsystems. 2007-12-18 [2008-03-05]..
- ^ Sun Microsystems, Java(TM) 语言规范 第三版, Prentice Hall, 2005, ISBN 0321246780.