如何在Java中注释代码块

时间:2014-06-15 12:09:44

标签: java annotations block

是否可以注释一段代码?例如。循环或简单的花括号?如果是这样,怎么样?

First.java

package An;
import An.ForCycle;

class First {
    public static void main(String[] args) {
        First f = new First();
    }

    public First () {

        @ForCycle
        {   // error: illegal start of type {
            int k;
        }

        @ForCycle
        for (int i = 0; i < 5; i++) {   // similar error (illegal start...)
            System.out.println(i);
        }
    }
}

ForCycle.java

package An;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.SOURCE)
public @interface ForCycle {}

根据http://www.javacodegeeks.com/2012/11/java-annotations-tutorial-with-custom-annotation.html

  

@Target - 表示注释类型适用的程序元素的种类。一些可能的值是TYPE,METHOD,CONSTRUCTOR,FIELD等。如果不存在Target元注释,则可以在任何程序元素上使用注释。

任何程序元素(我猜)也意味着阻止,不是吗?那么为什么我不能为阻止注释?我错过了什么?

感谢您的帮助

3 个答案:

答案 0 :(得分:5)

不,你不能这样做。其实你已经自己回答了你的问题。有一个可以使用注释的目标的紧密列表:{TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}。你可以看到没有“阻止”这样的东西。为什么?可能是因为注释必须附加到命名的内容,例如方法,领域,阶级等。

确实想想如何使用注释?使用反射API访问注释。您可以请求特定方法或字段的注释。您期望如何请求块的注释?

最后一次通知。注释可以在运行时或编译时使用。编译器时可用的注释由编译器,IDE和注释处理器使用,以生成其他警告,错误或代码。 IntelliJ作为一个众所周知的IDE,具有许多静态代码分析功能,支持所谓的“块注释”,在语法上是常规的内联注释,但被IDE视为可以抑制某些警告的注释。

答案 1 :(得分:3)

这意味着“已列出的中的任何程序元素”。

关于此事的最后一句话,只需提到Java Language Specification

  

注释可以在任何声明中用作修饰符,无论是包,类(包括枚举),接口(包括注释类型),字段,方法,形式参数,构造函数还是局部变量。

     

注释也可用于枚举常量。

答案 2 :(得分:1)

&#34;任何程序元素&#34;意味着来自指定列表&#34;&#34;内涵即&#34;默认为所有值&#34;这句话说的是。

通常这是不可能的,因为只有编译器使用代码块并将所有块压缩成以复杂方式混合的字节码。除了编译指南

之外,这种注释没有可能的用法