Java注解其实是代码里的特殊标记,使用其他工具可以对其进行处理。注解是一种元数据,起到了描述、配置的作用,生成文档,所有的注解都隐式地扩展自java.lang.annotation.Annotation。注解可能使用注解来自动生成附属文件,如部署描述符和Bean信息类,还可以用于自动生成测试、日志、事务语义等代码。可以注解方法、类、成员、局部变量等。

注解语法

注解是由注解接口来定义的,注解的定义很像接口的定义,与其他Java接口一样,注解也将会编译成class文件.在注解中,一般都会包含一些元素以表示某些值,注解的元素看起来就像接口中的方法,可以为注解元素指定一些值。

modifiers @interface AnnotationName
{
elementDeclaration1;
elementDeclaration2;
}

举例来说

public @interface Message
{
String sendTo() default "[none]";
int level()=0;
}

每个注解都有下面的格式

@AnnotationName(elementName1=value1,elementName2=value2)

举例来说

@Message(sendTo="Jack",level=5)

注解元素的类型

  • 基本类型
  • String
  • Class
  • enum类型
  • 注解类型
  • 以上类型的数组

注解分类

根据注解参数的个数可以分为:

  • 标记注解

    没有元素的注解成为标记注解
  • 单值注解
  • 完整注解

根据注解使用用途和方法可以分为:

  • 内置系统注解
  • 元注解
  • 自定义注解

注解举例

java.lang、java.lang.annotation和javax.annotation包中定义了很多的注解接口,其中四种是元注解,还有三种标准注解,其中有用于编译的注解

名称 说明
@Override 检查是否覆盖了来自超类的方法
@Deprecated 抑制过时的项的警告
@SuppressWarning 抑制编译器某种特殊类型的警告
@Generated 目的是代码生成工具使用

有用于资源管理的注解

名称 说明
@PostConstrut和@PreDestory 用于控制对象生命周期的环境中,标记了这些注解的方法应该在对象被构建之后,或者在对象移除之前调用
@Resource 用于资源注入

元注解是用于注解其他注解的注解

名称 说明
@Retention 定义了该Annotation被保留的时间长短
@Target 说明了Annotation所修饰的范围、可用于package、type、类型成员、方法参数和本地变量
@Documented 用于描述其他类型的annotation应该作为被标注的程序成员的公共API,可以被javadoc此类的工具文档化
@Inherited 阐述了某个被标注的类型是被继承的

Java注解的更多相关文章

  1. 19.Java 注解

    19.Java注解 1.Java内置注解----注解代码 @Deprecated                                    //不推荐使用的过时方法 @Deprecated ...

  2. Java注解入门

    注解的分类   按运行机制分:   源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnin ...

  3. java注解(Annotation)解析

    注解(Annotation)在java中应用非常广泛.它既能帮助我们在编码中减少错误,(比如最常见的Override注解),还可以帮助我们减少各种xml文件的配置,比如定义AOP切面用@AspectJ ...

  4. JAVA 注解的几大作用及使用方法详解

    JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...

  5. attilax.java 注解的本质and 使用最佳实践(3)O7

    attilax.java 注解的本质and 使用最佳实践(3)O7 1. 定义pojo 1 2. 建立注解By eclipse tps 1 3. 注解参数的可支持数据类型: 2 4. 注解处理器 2 ...

  6. paip.java 注解的详细使用代码

    paip.java 注解的详细使用代码 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...

  7. JAVA 注解的几大作用及使用方法详解【转】

    java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...

  8. 框架基础——全面解析Java注解

    为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码: 2. 让编程更加简洁,代码更加清晰: 3. 让别人高看一眼. spring.mybati ...

  9. Java注解配置

    Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用.包含在 java.lang.annota ...

随机推荐

  1. IL异常处理

    异常处理在程序中也算是比较重要的一部分了,IL异常处理在C#里面实现会用到一些新的方法 1.BeginExceptionBlock:异常块代码开始,相当于try,但是感觉又不太像 2.EndExcep ...

  2. [数据结构]——堆(Heap)、堆排序和TopK

    堆(heap),是一种特殊的数据结构.之所以特殊,因为堆的形象化是一个棵完全二叉树,并且满足任意节点始终不大于(或者不小于)左右子节点(有别于二叉搜索树Binary Search Tree).其中,前 ...

  3. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  4. C# 工厂模式+虚方法(接口、抽象方法)实现多态

    面向对象语言的三大特征之一就是多态,听起来多态比较抽象,简而言之就是同一行为针对不同对象得到不同的结果,同一对象,在不同的环境下得到不同的状态. 实例说明: 业务需求:实现一个打开文件的控制台程序的d ...

  5. JavaScript求两个数字之间所有数字的和

    这是在fcc上的中级算法中的第一题,拉出来的原因并不是因为有什么好说的,而是我刚看时以为是求两个数字的和, 很显然错了.我感觉自己的文字理解能力被严重鄙视了- -.故拉出来折腾折腾. 要求: 给你一个 ...

  6. H5 canvas的 width、height 与style中宽高的区别

    Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width=&q ...

  7. MemoryMappedFile 在 Mono in Linux 的开发笔记

    前言 MemoryMappedFile(简称MMF)类是.NET中对内存映射文件进行操作的类,内存映射文件是非常高效的本地IO方案,由操作系统提供内存与IO文件之间的映射转换,对内存映射文件的更改由操 ...

  8. 让Mono 4在Raspberry Pi上飞

    最近公司有项目想要在树莓派上做,代替原来的工控机(我们是把工控主机当作小的主机用,一台小的工控主机最少也要600左右,而树莓派只要200多).于是,公司买了一个Raspberry Pi B+和一个Ra ...

  9. C#与yaml解析

    YAML 官方网站称 YAML 是"一种所有编程语言可用的友好的数据序列化标准".YAML Ain't Markup Language,和GNU一样,YAML是一个递归着说&quo ...

  10. 腾讯云上免费部署HTTPS

    接上篇<腾讯云下安装 nodejs + 实现 Nginx 反向代理>,想从头一步到位的同学建议从上篇文章开始阅读.本文将继续介绍如何通过 Nginx 免费部署HTTPS. 留意下,这里的“ ...