当前位置 博文首页 > iteye_11191的博客:学习java的注释

    iteye_11191的博客:学习java的注释

    作者:[db:作者] 时间:2021-07-06 16:41

    注释也就是anotations是java1.5开始引入的,在jdk的文档中有这样的一段话是描述注解的,Annotation:Release 5.0 of the JDK introduced a metadata facility called annotations. Annotations provide data about a program that is not part of the program, such as naming the author of a piece of code or instructing the compiler to suppress specific errors. An annotation has no effect on how the code performs. Annotations use the form @annotation and may be applied to a program's declarations: its classes, fields, methods, and so on. The annotation appears first and often (by convention) on its own line, and may include optional arguments: JDK5,翻译一下就是jdk5.0引入了一个元数据功能叫做注解,注解提供的和程序有关的信息但是却不属于程序的一部分,这里估计就是不会被执行。如给一段代码命名作者,以及指定编译器不要注意特殊的错误,对于程序的执行不会有任何影响。注解的使用形式就是@anotation可以被置于一个程序的声明部分,类,类字段,以及方法。同时注解可以包含方法,呵呵翻译的不是很好啊,其实我读英文只能自己理解,翻译的话就不行了,不过分析总结一下,
    1:注解不会影响代码的运行,看上去好像就是写和不写运行结果,效率都一样。
    2:编译器能和注解交互,也就是说你可以影响编译的过程,呵呵,这点蛮强大的。
    3:实质就是提供关于注解对象的data,其中注解对象就是类啊,字段,以及方法。这个就很宽泛了,你想对这段代码,这个字段以及整个类赋予点什么特殊意义,就可以自己去实现一个注解,然后用你这个已经赋予特殊意义的注解去注解它就可以了。
    4:注解还可以带有参数。
    5:注解可以注解注解。
    谈了 注解的特点,就可以看看注解的用处,注解的特点决定了他以下 用途
    1.编写文档,通过代码里标识的元数据生成文档;2.代码分析,通过代码里标识的元数据对代码进行分析;3.编译检查,通过代码里标识的元数据让编译器能实现基本的编译检查;4.使用Annotation部分代替XML文件来配置运行参数。
    最后我们讨论一下如何实现一个注解,其实实现一个注解和写一个类很相识 不过没写类那么复杂,同时jdk中已经有很多内置的注解,这些注解很多都是可以被编译器来识别,增加代码的健壮性,自已也可以实现一个注解。

    import java.lang.annotation.*;

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUTIME)
    public @interface Test {}

    上面就是一个注解了,怎么样很简单吧。解释一下,第一行是说这个注解使用来注解方法,第二行表示新定义的注解将在运行时起作用。 定义一个注解的时候,要用到一些元注解(Java内置的注解),如上面例子中的定义,@Target表明新定义的注解将用于方法定义上,@Retention表明新定义的注解将在运行时起作用。在注解中,一般都会包含一些元素以表示某些值,而没有元素的注解称为标记注解,如上面的@Test注解,下面定义一个新的注解,将包含一些元素,如:
    import java.lang.annotation.*;

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface GroupTODO {
    public enum Severity { CRITICAL, IMPORTANT, TRIVIAL, DOCUMENTATION };
    Severity severity()
    default Severity.IMPORTANT;
    String item();
    String assignedTo();
    String dateAssigned();
    }
    该注解中定义了两个元素id和description,其中description元素通过default指定了默认值。
    这样我们就开发了两个注解,一个不带任何元素的标志注解,另一个带元素的注解,开发了注解之后,我们下一步就是用注解去注解我们的代码,这样的每一段被注解的代码编译后,注解信息就会带入到class中,我们就可以用代码分析器去分析编译后的class文件,提取注解信息。cs
    下一篇:没有了