java Annotations(批注)

一. 为什么需要:
     自从Java诞生之日起,人们就一直在解决它初期忽视了的一些问题:缺少元数据;缺乏将 Java以外的代码嵌入到Java源代码文件里的能力等。当Java面市的时候,针对这些问题而推出的JavaDoc终于让它变完整了。JavaDoc使 用了在代码里专门标记注释的概念,从而让它能够提取出额外的信息,说具体点就是文档,并将它转换成为我们熟悉的JavaDoc文档。这是一项简单的技术, 人人都可以使用。首先会有Doclet,目的是让人们扩展文档的输出。然后是Xdoclet,它像使用标记一样使用JavaDoc来生成代码,从而将整个 过程变得轻而易举。这部分是对J2EE的复杂性的回应。J2EE原来依靠很多样板代码(boilerplate code)把对象捆绑到J2EE框架里。但是这些方案都有一些问题。首先,注释里的标记从来都不会进入最终的源代码,所以除非你生成代码来反映这些标记, 否则你无法在运行期间查找到它。其次,它会把整个预处理层加到(在理想情况下应该是)一个简单编译过程里。最后,基于注释的标记在编译期间并不是很容易检 查,也无法轻易被很多IDE检查;如果你把注释标记拼写错了,编译器是不会注意到的,编译器只会关注那些它知道确切名字的标记。

 二.示例:

import java.lang.annotation.*;

  @Retention(RetentionPolicy.RUNTIME)

  @Target(ElementType.METHOD)

  public@interface FormLabel {String label();

  int width() default 40;

  }


三. 常用Annotation说明:
    1. @Retention用来定义通过设置RetentionPolicy的值批注能够在构建-运行过程中存留多久.
                          @Retention.RUNTIME,这意味着我们定义的批注将会在运行期间被保留在代码里。
                          @RetentionPolicy.SOURCE将被用于一个我们希望被编译器使用然后抛弃的批注。
                          @RetentionPolicy.CLASS让它们保留 在生成的类文件里,但是能够在运行期间被Java虚拟机(JVM)访问到

    2.@Target批注让你能够将它限制在代码的特定部分里.
                         ElementTypes有CONSTRUCTOR、FIELD、LOCAL_VARIABLE、PACKAGE、PARAMETER和TYPE

    3.@Documented的作用是,批注的使用应该在所有生成的JavaDoc文档里都反映出来。

    4.@Inherited的意思是,当另外一个类用类来扩展批注时,批注应该是可继承的;在默认情况下,批注是不能被继承的。


转载于:https://my.oschina.net/rainingcn/blog/85084

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值