关闭

Java注解基础概念

标签: Android进程
506人阅读 评论(0) 收藏 举报
分类:

注解的概念

注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Metadata很容易的就能够调用Annotations。注解与类、接口、枚举在同一个层次,并可以应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中,用来对这些元素进行说明注释。

注解的语法与定义形式

(1)以@interface关键字定义
(2)注解包含成员,成员以无参数的方法的形式被声明。其方法名和返回值定义了该成员的名字和类型。
(3)成员赋值是通过@Annotation(name=value)的形式。
(4)注解需要标明注解的生命周期,注解的修饰目标等信息,这些信息是通过元注解实现。

以 java.lang.annotation 中定义的 Target 注解来说明:

[java] view plain copy
  1. @Retention(value = RetentionPolicy.RUNTIME)  
  2. @Target(value = { ElementType.ANNOTATION_TYPE } )  
  3. public @interface Target {  
  4.     ElementType[] value();  
  5. }  

源码分析如下:
第一:元注解@Retention,成员value的值为RetentionPolicy.RUNTIME。
第二:元注解@Target,成员value是个数组,用{}形式赋值,值为ElementType.ANNOTATION_TYPE
第三:成员名称为value,类型为ElementType[]
另外,需要注意一下,如果成员名称是value,在赋值过程中可以简写。如果成员类型为数组,但是只赋值一个元素,则也可以简写。如上面的简写形式为:

[java] view plain copy
  1. @Retention(RetentionPolicy.RUNTIME)  
  2. @Target(ElementType.ANNOTATION_TYPE)  
  3. public @interface Target {  
  4.     ElementType[] value();  
  5. }  

注解的分类

注解的分类有两种分法:

第一种分法

1、基本内置注解,是指Java自带的几个Annotation,如@Override、Deprecated、@SuppressWarnings等;

2、元注解(meta-annotation),是指负责注解其他注解的注解,JDK 1.5及以后版本定义了4个标准的元注解类型,如下:

  • @Target
  • @Retention
  • @Documented
  • @Inherited

3、自定义注解,根据需要可以自定义注解,自定义注解需要用到上面的meta-annotation

第二种分法

注解需要标明注解的生命周期,这些信息是通过元注解 @Retention 实现,注解的值是 enum 类型的 RetentionPolicy,包括以下几种情况:

[java] view plain copy
  1. public enum RetentionPolicy {  
  2.     /** 
  3.      * 注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃. 
  4.      * 这意味着:Annotation仅存在于编译器处理期间,编译器处理完之后,该Annotation就没用了 
  5.      */  
  6.     SOURCE,  
  7.   
  8.     /** 
  9.      * 注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期. 
  10.      */  
  11.     CLASS,  
  12.   
  13.     /** 
  14.      * 注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在, 
  15.      * 保存到class对象中,可以通过反射来获取 
  16.      */  
  17.     RUNTIME  
  18. }  

元注解

如上所介绍的Java定义了4个标准的元注解:

@Documented:标记注解,用于描述其它类型的注解应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。

[java] view plain copy
  1. @Documented  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. @Target(ElementType.ANNOTATION_TYPE)  
  4. public @interface Documented {  
  5. }  

@Inherited:标记注解,允许子类继承父类的注解

[java] view plain copy
  1. @Documented  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. @Target(ElementType.ANNOTATION_TYPE)  
  4. public @interface Inherited {  
  5. }  

@Retention:指Annotation被保留的时间长短,标明注解的生命周期,3种RetentionPolicy取值含义上面以说明

[java] view plain copy
  1. @Documented  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. @Target(ElementType.ANNOTATION_TYPE)  
  4. public @interface Retention {  
  5.     RetentionPolicy value();  
  6. }  

@Target:标明注解的修饰目标,共有

[java] view plain copy
  1. @Documented  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. @Target(ElementType.ANNOTATION_TYPE)  
  4. public @interface Target {  
  5.     ElementType[] value();  
  6. }  
  7.   
  8. // ElementType取值  
  9. public enum ElementType {  
  10.     /** 类、接口(包括注解类型)或枚举 */  
  11.     TYPE,  
  12.     /** field属性,也包括enum常量使用的注解 */  
  13.     FIELD,  
  14.     /** 方法 */  
  15.     METHOD,  
  16.     /** 参数 */  
  17.     PARAMETER,  
  18.     /** 构造函数 */  
  19.     CONSTRUCTOR,  
  20.     /** 局部变量 */  
  21.     LOCAL_VARIABLE,  
  22.     /** 注解上使用的元注解 */  
  23.     ANNOTATION_TYPE,  
  24.     /** 包 */  
  25.     PACKAGE  
  26. }  

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java注解基础概念总结

注解的概念 注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Metadata很容易的就能够调用Annotations。注解与类、接口、枚举在同一个层次...
  • github_35180164
  • github_35180164
  • 2016-08-04 10:08
  • 2151

Java面试基础概念总结

前段时间由于忙于修改论文,就好久没更新博客,现在准备重新开始记录自己的屌丝人生。哈哈 面向对象软件开发的优点有哪些? 答:开发模块化,更易维护和修改;代码之间可以复用;增强代码的可靠性、灵活性和可理...
  • zjwcdd
  • zjwcdd
  • 2016-07-05 13:02
  • 7495

hadoop系基础概念扫盲

hadoop版本: hadoop1.0, hadoop2.0 Hadoop 1.0由一个分布式文件系统HDFS和一个离线计算框架MapReduce组成。HDFS由一个NameNode和多个Data...
  • five3
  • five3
  • 2014-07-11 14:24
  • 2989

Java基础知识系列之注解基本概念

什么是注解(Annotation):   Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接...
  • xiaohan2826
  • xiaohan2826
  • 2015-10-30 13:27
  • 176

java注解基础概念总结

1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃; 2、RetentionPolicy.CLASS:注解被保留到clas...
  • hypmxy
  • hypmxy
  • 2017-05-24 14:49
  • 95

黑马程序员_java基础加强_jak1.5新特性(3注解与)泛型概念

---------------------- android培训、java培训、期待与您交流! ---------------------- 一:注解 1:注解 注解就是告诉编译器在变异那些...
  • wm25281314
  • wm25281314
  • 2011-12-18 23:27
  • 156

深入理解Java:注解(Annotation)基本概念

什么是注解(Annotation):   Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一...
  • zhyooo123
  • zhyooo123
  • 2016-07-19 16:00
  • 172

Java注解(Annotation)的基本概念

Annotation的作用 不是程序本身,可以对程序做出解释,就和注释类似; 可以被其他程序(例如:编译器)读取。(注解信息处理流程,是注解和注释的重大区别。如果没有注解信息的处理流程,则注解毫无...
  • sj617913246
  • sj617913246
  • 2017-06-16 18:37
  • 151

Java注解(一) 基本概念

这篇文章会介绍注解的基本概念,会介绍注解是什么,注解有什么作用等。 下一篇文章会介绍Java中的系统注解的使用方法,然后会有一篇文章讲解如何提解注解中的值,最后会有一个简单的ORM实现原理介绍。也...
  • ljYangscut
  • ljYangscut
  • 2016-04-28 15:11
  • 1110

深入理解Java:注解(Annotation)基本概念

原文:http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html        什么是注解(Annotation):   Ann...
  • erlian1992
  • erlian1992
  • 2016-11-29 23:50
  • 1289
    个人资料
    • 访问:106951次
    • 积分:1618
    • 等级:
    • 排名:千里之外
    • 原创:71篇
    • 转载:8篇
    • 译文:3篇
    • 评论:24条
    最新评论