Java 7中的注释(元数据)

        注释(元数据)


  从JDK 5开始,Java中增加了一项可以在源文件中嵌入附加信息的功能。这些信息称为注释,它不会改变程序的运行。但是,这些信息在开发和部署期间可以由许多工具使用。例如,注释可以由源代码生成器、编译器或者部署工具处理。虽然元数据(metadata)这个术语也用来指示这项功能,但是术语"注释"的描述性更好,并且更加常用。


  注释是一个庞大复杂的话题,对其深入讨论超出了本书的范围。这里仅做简要讨论,以便读者熟悉其概念。


   注意


  关于元数据和注释的详细讨论可以在作者撰写的《Java完全参考手册(第8版)》(由清华大学出版社引进并出版)一书中找到。


  注释通过基于interface的机制创建,如下所示:


  // A simple annotation type.


  @interface MyAnno {


  String str();



  int val();


  }


  上述语句声明了一个名为MyAnno的注释。注意interface关键字前有一个@ ,它告诉编译器此处声明了一个注释类型。接下来,注意两个成员str( )和val( )。所有的注释都仅由方法声明组成。但是不能提供方法的主体,而是由Java来实现这些方法。这些方法实际上就像域一样。


  所有的注释类型都自动地扩展了Annotation 接口。因此,Annotation是所有注释的超接口,它在java.lang.annotation 包中声明。


  声明了注释之后,可以使用它来标注声明。任何类型的声明都可以有一个与之相关联的注释。例如,类、方法、域、形参和enum常量都可以有注释。甚至注释还可以带有注释。在上述所有情况下,注释都位于其余声明部分之前。


  使用注释之后,需要向其成员提供值。例如,下面是一个应用于方法的MyAnno示例:


  // Annotate a method.


  @MyAnno(str = "Annotation Example", val = 100)


  public static void myMeth() { // …


  该注释与方法myMeth( )链接。下面仔细分析一下注释的语法。注释名前置了@, 后面跟成员初始值的括号列表。为了给成员提供值,需要向成员名赋值。因此,该例中字符串"Annotation Example"赋值给了MyAnno的str成员。注意该赋值语句中str后面没有跟括号。当为注释成员提供值时,只使用其名称。因此,在本例中注释成员就像域 一样。


  不带形参的注释称为标记注释(marker annotation),它们在指定时不传递实参,也不使用括号。它们的唯一作用就是标记一个声明带有某种属性。


  Java定义了许多内置注释,大多数是专用的,有8个是通用的。下面的4个从java.lang.annotation导入:@Retention、@Documented、@Target和@Inherited.下面的4个包括在java.lang中:@Override、@Deprecated、@SafeVarargs和@SuppressWarnings.表12-1列出了这些内置注释。


  表12-1  通用的内置注释





  下面是一个使用@Deprecated 注释标记 MyClass类和getMsg( )方法的示例。当编译该程序时,将会警告使用了这些不再建议使用的元素。


  // An example that uses @Deprecated.


  // Deprecate a class.


  @Deprecated


  class MyClass {


  private String msg;


  MyClass(String m) {


  mmsg = m;


  }


  // Deprecate a method within a class.


  @Deprecated


  String getMsg() {


  return msg;


  }


  // …


  }


  class AnnoDemo {


  public static void main(String args[]) {


  MyClass myObj = new MyClass("test");


  System.out.println(myObj.getMsg());


  }


  }


       节选自《新手学Java 7编程》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值