一、概述

   引自百度百科:

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

二、JDK内置注解

  Java提供了三种内建注解。

  1. @Override——当我们想要复写父类中的方法时,我们需要使用该注解去告知编译器我们想要复写这个方法。这样一来当父类中的方法移除或者发生更改时编译器将提示错误信息。

  2. @Deprecated——当我们希望编译器知道某一方法不建议使用时,我们应该使用这个注解。Java在javadoc 中推荐使用该注解,我们应该提供为什么该方法不推荐使用以及替代的方法。

  3. @SuppressWarnings——这个仅仅是告诉编译器忽略特定的警告信息,例如在泛型中使用原生数据类型。它的保留策略是SOURCE(译者注:在源文件中有效)并且被编译器丢弃。

三、元注解

  这里有四种类型的元注解:

  1. @Documented —— 指明拥有这个注解的元素可以被javadoc此类的工具文档化。这种类型应该用于注解那些影响客户使用带注释的元素声明的类型。如果一种声明使用Documented进行注解,这种类型的注解被作为被标注的程序成员的公共API。

  2. @Target——指明该类型的注解可以注解的程序元素的范围。该元注解的取值可以为TYPE,METHOD,CONSTRUCTOR,FIELD等。如果Target元注解没有出现,那么定义的注解可以应用于程序的任何元素。

  3. @Inherited——指明该注解类型被自动继承。如果用户在当前类中查询这个元注解类型并且当前类的声明中不包含这个元注解类型,那么也将自动查询当前类的父类是否存在Inherited元注解,这个动作将被重复执行知道这个标注类型被找到,或者是查询到顶层的父类。

  4.@Retention——指明了该Annotation被保留的时间长短。RetentionPolicy取值为SOURCE,CLASS,RUNTIME。

  更多详细介绍与讲解,参见(推荐):http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html    (包含注解处理器等,推荐!)

四、自定义注解

  还是像之前一样,我们找到一个已经存在的注解来看看它怎么写的(例如:@SuppressWarnings

  1.定义:可以看到使用 @interface来声明一个注解

public @interface SuppressWarnings {

  2.成员:注意定义的格式,后面需要带小括号,如果需要默认值,可以后接default ""等形式

 String[] value();

  示例:

@Target({ ElementType.TYPE })//注解用在接口上
@Retention(RetentionPolicy.RUNTIME)//VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息
@Component
public @interface RpcService {String value();
}

  使用spring来使用自定义的注解:

@Component
public class MyServer implements ApplicationContextAware {@SuppressWarnings("resource")public static void main(String[] args) {new ClassPathXmlApplicationContext("spring2.xml");}public void setApplicationContext(ApplicationContext ctx)throws BeansException {Map<String, Object> serviceBeanMap = ctx.getBeansWithAnnotation(RpcService.class);for (Object serviceBean : serviceBeanMap.values()) {try {Method method = serviceBean.getClass().getMethod("hello", new Class[]{String.class});Object invoke = method.invoke(serviceBean, "bbb");System.out.println(invoke);} catch (Exception e) {e.printStackTrace();} }}
}

   //完整的数据类型支持,请参见上文链接

   //之后使用的注解中也可以看到,如果注解只有一个成员且为 value,可以省略,不用写@RequestMapping(value = "/add"),可以简写为("/add")

转载于:https://www.cnblogs.com/jiangbei/p/7582399.html

Java基础——注解相关推荐

  1. Java基础-注解和反射

    Java基础-注解和反射 前言 对于注解,我主要还是在自定义APT还有运行时反射获取类来让自己能够构建出复用性更高的代码逻辑. 知识点1-注解: 注解的应用场景由元注解@Retention来进行指定, ...

  2. Java基础 --- 注解 Annotation

    Java基础 --- 注解 Annotation Java注解 Java自带的标准注解 自定义注解 Java注解 Java注解它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadat ...

  3. 夯实 Java 基础 - 注解

    夯实 Java 基础 - 注解 不知道大家有没有一种感觉,当你想要了解某个知识点的时候,就会发现好多技术类 APP 或者公众号在推一些关于这个知识点的文章.也许这就是大数据的作用,这也说明总有人比你抢 ...

  4. Java基础-注解机制详解

    文章目录 1. 注解基础 1.1 Java内置注解 1.1.1 内置注解 - @Override 1.1.2 内置注解 - @Deprecated 1.1.3 内置注解 - @SuppressWarn ...

  5. java基础-注解Annotation原理和用法

    转载自 http://www.wolfbe.com/detail/201608/265.html 在很多java代码中都可以看到诸如@Override.@Deprecated.@SuppressWar ...

  6. Java 基础 —— 注解

    注解(annotation)不是注释(comment): 注解,是一种元数据(metadata),可为我们在代码中添加信息提供了一种形式化的方法.注解在一定程度上实现了元数据和源代码文件的结合,而不是 ...

  7. java基础:注解的定义与使用

    java中的注解 1.该如何来理解注解? 乔布斯重新定义了手机,罗太君重新定义了傻逼.自然而然的就给罗太君贴上了傻逼的标签,不熟悉老罗的人,不知道他当教师,办博客,做手机,殊不知老罗还有"理 ...

  8. java基础- 注解和反射

    1. 注解(Annotation) 1. 什么是注解 Annotation是从JDK5.0开始引入的新技术. Annotation的作用 : 不是程序本身,可以对程序作出解释.(这一点和注释(comm ...

  9. Java基础--注解

    一直都想了解一下注解,下面是自己学到的一点东西. 1.分类 内置注解(@Override,@Deprecated,@SuppressWarnings),源码上很清楚的备注了各自的作用. 元注解(@Re ...

最新文章

  1. 稳压管,TVS管,压敏电阻,气体放电管等电涌保护器器件比较------amoBBS
  2. SQLServer CDC数据迁移和数据抽取功能介绍 2
  3. BigDecimal 使用详解
  4. 谷歌甲骨文Java专利大战终审判决:安卓使用Java不构成侵权
  5. (Oracle学习笔记) Oracle体系结构
  6. Django默认用户认证系统和用户模型类
  7. 获取控制器 nextResponder的简单应用
  8. SSH Config Editor Mac(SSH配置编辑器)V2.2
  9. Nature:新发现挑战神经元作用传统理论 [转自科学网]
  10. eclipse创建测试apk文件的测试工程,报错java.lang.NullPointerException
  11. Codeforces 208E. Blood Cousins
  12. hualinux0.6 网络篇:你懂得路由器的种类吗?
  13. 墨盒注墨后出现断线或堵头的处理方法
  14. 冯扬文:基于数据仓库的集装箱运价信息集成研究
  15. 中国国产十大著名户外运动品牌全球最顶级碳纤维自行车品牌排行榜
  16. 使用ShareX+sm.ms实现截图后自动上传图片至图床
  17. java语言就业方向_java就业有哪些方向
  18. C51汇编语言寻址方式,80C51单片机指令系统的7种寻址方式
  19. ppt形状html,PPT如何才能高大上?“形状”在PPT有这些妙用
  20. Win10安装silverlight5开发环境,以及坑

热门文章

  1. 【MFC】滚动字幕的状态栏
  2. cocos 时间函数需要什么引用_酱香型白酒,为什么需要长时间储存?
  3. Python对象基础
  4. 内存对齐指令详解(posix_memalign)
  5. java死锁的产生与解决
  6. 《Linux内核设计与实现》读书笔记(七)- 中断处理
  7. TCP三次握手详解及释放连接过程
  8. 二叉树的遍历 (递归和非递归实现)
  9. Linux下的shell语言编程入门
  10. [NOTE] SQLite基础及注入相关