注解,作为元数据的一种形式,虽不是程序的一部分,却有以下作用:

可以让编译器跳过某些检测

某些工具可以根据注解信息生成文档等

某些注解可以在运行时检查

 

@表示这是一个注解

 

@Override

 

 

 注解可以包含元素,可以有值

 

@Author(
name = "Benjamin Franklin",
date = "3/27/2003"
)

 

 

只有一个元素时可以没有名字

 

@SuppressWarnings("unchecked")

 

 

 

没有元素时可以没有括号

 

@Author(name = "Jane Doe")
@EBook

 

注解也可以有多个,规范做法是每个都单独一行

 

在JDK8以后,可以有重复注解:

 

@Author(name = "Jane Doe")
@Author(name = "John Smith")

 

 

 

注解的类型在java.lang 或java.lang.annotation

也可以自定义自己的注解类型

 

注解通常用在定义的地方,类,字段,方法等

在JDK8以后,注解也能作为类型,称为type annotation

 

以前,注解是来替代注释的

首先要定义

 

import java.lang.annotation.*;
@Documented //前面加这个可以让生成的javadoc包括这个注解信息
@interface ClassPreamble { //前面是@interface , 其实注解都是接口,而且定义时也类似接口
String author(); //元素定义
String date(); int currentRevision() default 1; //默认值
String lastModified() default "N/A";
String lastModifiedBy() default "N/A";
// Note use of array
String[] reviewers();}

 

 

定义以后就可以使用了

@ClassPreamble (  //直接@注解类型
author = "John Doe",
date = "3/17/2002",
currentRevision = 6,
lastModified = "4/12/2004",
lastModifiedBy = "Jane Doe",
// Note array notation
reviewers = {"Alice", "Bob", "Cindy"}
)
public class Generation3List extends Generation2List {
// class code goes here
}

 

java.lang中的也就是预定义注解

@Deprecated是已过期,编译器会警告

@Override表示这是个覆盖的方法,其实不写也行,通常是个强制性提示,覆盖的不对会报错

 

@SuppressWarnings("deprecation")让编译器忽略某个警告

编译警告通常有两种,deprecationunchecked,unchecked会提示那些在泛型发明以前写的代码

@SuppressWarnings({"unchecked", "deprecation"})//可以写多个

 

@SafeVarargs@FunctionalInterface ( 新)

 

有的注解是用于其他注解的,这称为元注解,通常在java.lang.annotation

@Retention

@Documented

@Target

@Inherited

@Repeatable

 

Annotations:注解的更多相关文章

  1. Android注解使用之使用Support Annotations注解优化代码

    前言: 前面学习总结了Java注解的使用,博客地址详见Java学习之注解Annotation实现原理,从本质上了解到什么注解,以及注解怎么使用?不要看见使用注解就想到反射会影响性能之类,今天我们就来学 ...

  2. Hibernate Annotations 注解

    Hibernate Annotations 注解 对于org.hibernate.annotations与org.hibernate.persistence,它的注释比如Columns,可是不知道怎么 ...

  3. Android Annotations 注解例子

    1.AndroidAnnotations官网: http://androidannotations.org/ (也许你需要FQ) 2.eclipse中使用androidannotations的配置方法 ...

  4. jackson annotations注解详解

    jackson中常用到的注解 猛击下面的连接地址 http://blog.csdn.net/sdyy321/article/details/40298081

  5. jackson annotations注解详解 (zhuan)

    http://blog.csdn.net/sdyy321/article/details/40298081 ************************************** 官方WIKI: ...

  6. ibatis annotations 注解方式返回刚插入的自增长主键ID的值

    mybatis提供了注解方式编写sql,省去了配置并编写xml mapper文件的麻烦,今天遇到了获取自增长主键返回值的问题,发现相关问答比较少,还好最后还是圆满解决了,现把重点记录一下,解决问题的关 ...

  7. ibatis annotations 注解方式返回刚插入的自增长主键ID的值--转

    原文地址:http://www.blogs8.cn/posts/WWpt35l mybatis提供了注解方式编写sql,省去了配置并编写xml mapper文件的麻烦,今天遇到了获取自增长主键返回值的 ...

  8. ABAP CDS - Annotations 注解

    Syntax ... annotation[.annotation1[.annotation2]][:value]  ... Effect Annotation that can be specifi ...

  9. Android Studio配置Android Annotations框架详解--说说那些坑

    我们开发过程中都需要写些findViewByid.serOnclickListener等类似的代码,虽然不费事,但是一个项目下来,工作量还是很大的.为了节省工作量,运生了很多对应的注解框架.网上的博客 ...

随机推荐

  1. iOS Objective-C对象模型及应用

    前言 原创文章,转载请注明出自唐巧的技术博客. 本文主要介绍Objective-C对象模型的实现细节,以及Objective-C语言对象模型中对isa swizzling和method swizzli ...

  2. android从应用到驱动之—camera(2)---cameraHAL的实现

    本文是camera系列博客,上一篇是: android从应用到驱动之-camera(1)---程序调用流程 本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这 ...

  3. 面试题_66_to_75_Java IO 和 NIO 的面试题

    IO 是 Java 面试中一个非常重要的点.你应该很好掌握 Java IO,NIO,NIO2 以及与操作系统,磁盘 IO 相关的基础知识.下面是 Java IO 中经常问的问题. 66)在我 Java ...

  4. hdu 4825 Xor Sum (建树) 2014年百度之星程序设计大赛 - 资格赛 1003

    题目 题意:给n个数,m次询问,每次给一个数,求这n个数里与这个数 异或 最大的数. 思路:建一个类似字典数的数,把每一个数用 32位的0或者1 表示,查找从高位向底位找,优先找不同的,如果没有不同的 ...

  5. ASCII码常用值

    大写字母 A~Z 65~90 小写字母a~z 97~122 数字0~9 48~ 57

  6. centos的版本和内核查看

    查看linu的内核信息 查看distrubution,centos属于哪个release

  7. SQL全文搜索

    ( select dd.*,t.RANK from crm_CustomerAnalyzeDetails dd ) as t on dd.ID = t.[key] ) union all ( sele ...

  8. C#中结构体的声明

    定义:       结构是用户自定义的值类型 代码样式:struct Pair{    public int X, Y; //公有变量名单词的首字母大写(PascalCase规则)}struct Pa ...

  9. linux的HugePage与oracle amm关系

     如果Oracle 是11g以后的版本,那么默认创建的实例会使用Automatic Memory Management (AMM)的特性,该特性与HugePage不兼容. 在设置HugePage之前需 ...

  10. WinDbg调试命令汇总

    一. 1. !address eax 查看对应内存页的属性 2. vertarget 显示当前进程的大致信息 3 !peb 显示process Environment Block 4. lmvm 可以 ...