技术开发 频道

J2SE5.0中新特性:注释



【IT168 技术文档】

三、如何自定义注释

    注释的强大之处是它不仅可以使java程序变成自描述的,而且允许程序员自定义注释。注释的定义和接口差不多,只是在interface前面多了一个“@”。

public @interface MyAnnotation { }
    上面的代码是一个最简单的注释。这个注释没有属性。也可以理解为是一个标记注释。就象Serializable接口一样是一个标记接口,里面未定义任何方法。

    当然,也可以定义而有属性的注释。
public @interface MyAnnotation { String value(); }
    可以按如下格式使用MyAnnotation
@MyAnnotation(“abc”) public void myMethod() { }
    看了上面的代码,大家可能有一个疑问。怎么没有使用value,而直接就写”abc”了。那么”abc”到底传给谁了。其实这里有一个约定。如果没有写属性名的值,而这个注释又有value属性,就将这个值赋给value属性,如果没有,就出现编译错误。

    除了可以省略属性名,还可以省略属性值。这就是默认值。
public @interface MyAnnotation { public String myMethod(){} default “xyz”; }
    可以直接使用MyAnnotation
@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() { }
    这一节讨论了如何自定义注释。那么定义注释有什么用呢?有什么方法对注释进行限制呢?我们能从程序中得到注释吗?这些疑问都可以从下面的内容找到答案。
0
相关文章