【IT168 技术文档】
三、如何自定义注释
注释的强大之处是它不仅可以使java程序变成自描述的,而且允许程序员自定义注释。注释的定义和接口差不多,只是在interface前面多了一个“@”。
上面的代码是一个最简单的注释。这个注释没有属性。也可以理解为是一个标记注释。就象Serializable接口一样是一个标记接口,里面未定义任何方法。public @interface MyAnnotation ...{ }
当然,也可以定义而有属性的注释。
可以按如下格式使用MyAnnotationpublic @interface MyAnnotation ...{ String value(); }
看了上面的代码,大家可能有一个疑问。怎么没有使用value,而直接就写”abc”了。那么”abc”到底传给谁了。其实这里有一个约定。如果没有写属性名的值,而这个注释又有value属性,就将这个值赋给value属性,如果没有,就出现编译错误。@MyAnnotation(“abc”) public void myMethod() ...{ }
除了可以省略属性名,还可以省略属性值。这就是默认值。
可以直接使用MyAnnotationpublic @interface MyAnnotation ...{ public String myMethod()...{} default “xyz”; }
也可以这样使用@MyAnnotation // 使用默认值xyz public void myMethod() ...{ }
@MyAnnotation(myMethod=”abc”) public void myMethod() ...{ }
如果要使用多个属性的话。可以参考如下代码。
这一节讨论了如何自定义注释。那么定义注释有什么用呢?有什么方法对注释进行限制呢?我们能从程序中得到注释吗?这些疑问都可以从下面的内容找到答案。public @interface MyAnnotation ...{ public enum MyEnum...{A, B, C} public MyEnum.value1() ...{} public String value2() ...{} } @MyAnnotation(value1=MyAnnotation.MyEnum.A, value2 = “xyz”) public void myMethod() ...{ }