您的位置:首页 > 编程语言 > Java开发

Java注解 Annotation

2013-02-02 15:47 148 查看

Java注解 Annotation

Annotation的由来

  从JDK5.0发布以来,5.0平台提供了一个正式的annotation功能:允许开发者定义、使用自己的annotation类型。

  此功能由一个定义annotation类型的语法和一个描述annotation声明的语法,读取annotation的API,一个使用annotation修饰的class文件,一个annotation处理工具(apt)组成。

Annotation工作方式

  Annotation并不直接影响代码语义,但是它能够被看作类似程序的工具或者类库,它会反过来对正在运行的程序语义有所影响。

  Annotation可以从源文件、class文件、或者以在运行时反射的多种方式被读取。

JDK中内置的注解

  Java注解Annotation:

  Override注解(@Override)表示子类要重写父类的对应方法。

  Deprecated注解(@Deprecated)表示方法是不建议被使用的。

  SuppressWarnings注解(如:@SuppressWarnings("unchecked"))表示抑制警告。

  括号中的参数(一个字符串数组)表示要压制的警告类型。单个字符串的时候可以用也可以不用花括号,但是多个字符串的时候需要用花括号包起来表示,

  比如:    

  @SuppressWarnings({"unchecked","deprecation"})

  如果注解一个类去压制一种警告,再注解类中的方法取压制另一种警告,则方法中会同时压制这两种警告。

Annotation的定义方式

  自己定义注解:

  新建->Annotation.

  可以看到注解定义的形式与interface类似,不同的是在interface关键字前面加了一个@符号。

  自定义注解:当注解中的属性名为value时,在对其赋值时可以不指定属性的名称而直接写上属性值即可;除了value以外的其他值都需要使用name=value这种显式赋值方式,即明确指定给谁赋值。

  [b]程序示例1:[/b]  

加入文档的注解

import java.lang.annotation.Documented;

@Documented
// 表示注解DocumentedAnnotation将会生成到文档里面去
public @interface DocumentedAnnotation
{
String hello();

}

public class DocumentedTest
{
@DocumentedAnnotation(hello="welcome")
public void method()
{
System.out.println("Hello World!");
}

}


[b] [/b]

子类是否继承父类@Inherited

  缺省状态下,父类中的annotation并不会被子类继承。

  可以在定义Annotation型态时加上java.lang.annotation.Inherited型态的Annotation。

  比较简单,不再举例。

参考资料

  张龙老师Java SE视频教程。

  另:官方文档是最好的参考资料。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: