Java注解(Annotation)的基本概念

来源:互联网 发布:爬虫获取股票数据 编辑:程序博客网 时间:2024/06/07 20:43

Annotation的作用

  • 不是程序本身,可以对程序做出解释,就和注释类似;
  • 可以被其他程序(例如:编译器)读取。(注解信息处理流程,是注解和注释的重大区别。如果没有注解信息的处理流程,则注解毫无意义)

Annotation的格式

  • 注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")

Annotation在哪里使用?

  • 可以附加在package,class,method,field等上面,相当于给它们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。

内置注解

  • @Override
    -定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。
  • @Deprecated
    -定义在java.lang.Deprecated中,此注释可用于修辞方法,类,属性,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。
  • @SuppressWarnings
    -定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息。

元注解

  • 元注解的作用就是负责注解其他注解。Java定义个4个标准的meta-annotation类型,它们被用来提供对其它annotation类型作说明
  • 这些类型和他们所支持的类在java.lang.annotation包中可以找到

    @Target
    @Retention
    @Documented
    @Inherited

@Target – 表示该注解用于什么地方。如果不明确指出,该注解可以放在任何地方。以下是一些可用的参数。需要说明的是:属性的注解是兼容的,如果你想给7个属性都添加注解,仅仅排除一个属性,那么你需要在定义target包含所有的属性。

  • ElementType.TYPE:用于描述类、接口或enum声明
  • ElementType.FIELD:用于描述实例变量
  • ElementType.METHOD
  • ElementType.PARAMETER
  • ElementType.CONSTRUCTOR
  • ElementType.LOCAL_VARIABLE
  • ElementType.ANNOTATION_TYPE 另一个注释
  • ElementType.PACKAGE 用于记录java文件的package信息

@Retention– 定义该注解的生命周期。

  • RetentionPolicy.SOURCE – 在编译阶段丢弃。这些注解在编译结束之后就不再有任何意义,所以它们不会写入字节码。@Override, @SuppressWarnings都属于这类注解。

  • RetentionPolicy.CLASS – 在类加载的时候丢弃。在字节码文件的处理中有用。注解默认使用这种方式。

  • RetentionPolicy.RUNTIME– 始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息。我们自定义的注解通常使用这种方式。

@Documented–一个简单的Annotations标记注解,表示是否将注解信息添加在java文档中。

@Inherited – 定义该注释和子类的关系

自定义注解

自定义注解的简单讲解(使用注解的方式将javabean类转换为数据库表)

原创粉丝点击