以下只对java中注解的使用进行简单的说明,深入学习待查询相关文章
一、注解示例
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Ignore {
String[] reasons() default "默认原因"; // 数组;default表示默认值,如果使用default,可在使用该注解时不用对此进行赋值(使用该缺省值)
String initials();
Date date(); // 复式注解类型
}
/**
* 作为Ignore注解的一部分,不需要设置保留度(retenion)或目标(target)
*/
public @interface Date {
int month();
int day();
int year();
}
// 使用范例
public class Car {
@Ignore(reasons = { "原因1",
"原因2" }, initials = "eg366", date = @Date(day = 28, month = 1, year = 2012))
public void testC() {
}
}
以上事例程序展示了简单注解的使用,
(1)保留(Retention)
@Retention元注解,使用该注解告诉java编译器,注解信息要保留多久,有三个选择:
<1>RetentionPolicy.SOURCE:在编译时被丢弃(举例:@Override、@TODO)
<2>RetentionPolicy.CLASS:保存在类文件中;在运行时可以被JVM丢弃
<3>RetentionPolicy.RUNTIME:保存在类文件中;在运行时由JVM保留
(2)注解的目标(Annotation target)
说明该自定义的注解类型可以修饰的元素类别:TYPE,FIELD,METHOD,PRARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,ANNOTATION_TYPE,PACKAGE
二、说明
(1)没有指定目标(target)的注解可以修饰任何java元素
(2)不能将null作为注解的值
(3)不能用一个注解来重复的修饰某个元素
(4)元注解@Documented 表示注释应该出现在类的Javadoc中,而默认情况下,注释不包括在 Javadoc 中。
(5)元注解@Inherited表示定义的注释类型将具备继承属性,使用该注释类型的类被继承时,其子类仍具备父类的注释。