创建

@Target({ElementType.Type})
@Retention(RetentionPolicy.RUNTIME)
public @interface Fruit {
String value() default "";
String name() default "noname";
float price() default 0;
} // 1. 创建的语法跟接口非常像
// 2. 可以通过 default 语句给与默认值

@Target

目标。

表示这个注解可以放到哪些元素上面。如果不设定,那么注解可以放置到任何元素上。

可以有很多选项,比如:

  • ElementType.TYPE,可以放到类、接口、枚举类上面
  • ElementType.METHOD,可以放到方法上面
  • ElementType.PARAMETER,可以放到参数上面

更多,请查看 ElementType 的源码。

@Retention
保留。 有三种策略: RetentionPolicy.SOURCE
RetentionPolicy.CLASS [默认]
RetentionPolicy.RUNTIME
添加的注解会被保留到什么步骤。 一个 Xxx.java 从产生到执行,会经历这样的步骤
Xxx.java --javac--> Xxx.class --java--> 机器码执行

  执行 javac 的过程,叫编译时(Compile);

  执行 java 的过程,叫运行时(Runtime);

  如果 @Retention 策略设置为:

  • SOURCE,那么在 javac 阶段注解会有效,编译之后注解将会被抛弃
  • CLASS,那么注解将会被编译到 class 文件中,但它不能在运行时通过反射获取
  • RUNTIME,那么注解将会被编译到 class 文件中,并能在运行时通过反射获取

  @Documented

  表示是否允许 javadoc 或相关工具为这个注解生成文档

  @Inherited

  表示注解是否可以被子类继承。

 注解的使用

首先,在需要的地方,添加注解:

@Fruit(name = "apple", price = 33)
public class Apple {
// ...
}

  三个重要的方法:

  • isAnnotationPresent()
  • getAnnotation()
  • getAnnotations()

使用示例:

// 获取 Apple 的类对象
Class aClass = Apple.class; if (aClass.isAnnotationPresent(Fruit.class)) { // 判断 Apple 上面是否标注了 Fruit 注解
Fruit anno = aClass.getAnnotation(Fruit.class); // 通过反射的方式,获取 Apple 上面的 Fruit 注解的实例 String name = anno.name(); // 可以像调用普通方法一样调用,从而获取参数
float price = anno.price(); System.out.println(name + "的价格为" + price);
}

  JDK 内置注解

  • @Override, 重载
  • @SuppressWarnings, 抑制警告信息
  • @Deprecated, 标注方法已过时,那么在编译的时候,编译器会发出相关警告
  • @SafeVarargs
  • @FunctionInterface

java中定义注解的更多相关文章

  1. java中的注解(Annotation)

    转载:https://segmentfault.com/a/1190000007623013 简介 注解,java中提供了一种原程序中的元素关联任何信息.任何元素的途径的途径和方法. 注解是那些插入到 ...

  2. java中的注解详解和自定义注解

    一.java中的注解详解 1.什么是注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override public Str ...

  3. java中元注解

    java中元注解有四个: @Retention @Target @Document @Inherited:  @Retention:注解的保留位置 @Retention(RetentionPolicy ...

  4. 【java】细说 JAVA中 标注 注解(annotation)

    Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用 下面我们来详细说说这个注解,到底是怎么一 ...

  5. java中的注解总结

    1. 什么是注解 注解是java5引入的特性,在代码中插入一种注释化的信息,用于对代码进行说明,可以对包.类.接口.字段.方法参数.局部变量等进行注解.注解也叫元数据(meta data).这些注解信 ...

  6. Java深入 - 深入 Java自己定义注解

    我们在使用Spring框架的时候,会常常使用类似:@Autowired 这种注解. 我们也能够自定义一些注解.Java的注解主要在包:java.lang.annotation中实现. 1. 元注解 什 ...

  7. 【java】详解java中的注解(Annotation)

    目录结构: contents structure [+] 什么是注解 为什么要使用注解 基本语法 4种基本元注解 重复注解 使用注解 运行时处理的注解 编译时处理的注解 1.什么是注解 用一个词就可以 ...

  8. Java中的注解基础

    一.元注解 元注解的作用就是负责注解其他注解. 1.@Target @Target用来指明注解所修饰的目标,包括packages.types(类.接口.枚举.Annotation类型).类型成员(方法 ...

  9. 【面试加分项】java自己定义注解之申明注解

    之前的博客http://blog.csdn.net/u010590685/article/details/47029447介绍了java的注解的基本知识今天我们学习怎样使用自己定义注解. 首先我们要声 ...

随机推荐

  1. python__基础数据类型

    字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台 ...

  2. python​日记:优化(SEO)狗学Python的日子(1)

    一名优秀的程序员,在穿越单行道时也会确认双向的来车情况 ——道格拉斯.林德(Doug Linder) 大家可能好奇Python是什么东东,今天是小猿开始学习Python的第一天.周五在公司的时候收到了 ...

  3. numpy-查找操作大全

    本文记录日常工作中遇到的查找操作,持续更新. 注意:输入必须是 数组,不能是 list 极值 min,max 返回极值 argmin(a, axis=None, out=None), 返回极值所在的位 ...

  4. 由对称性解2-SAT问题

    由对称性解2-SAT问题 (by 伍昱,03年IOI国家集训队论文ppt) 2-SAT: 2-SAT就是2判定性问题,是一种特殊的逻辑判定问题. 2-SAT问题有何特殊性?该如何求解? 我们从一道例题 ...

  5. Centos7 用gogs搭建git仓库

    0.安装步骤 先安装依赖,然后创建数据库,创建git用户,安装Gogs软件,设置启动,访问web界面进行配置 一.Gogs依赖环境 安装Gogs之前需要配置相应的依赖环境,官网介绍的依赖环境如下: 数 ...

  6. c#委托(Delegates)--基本概念及使用

    在我这菜鸟理解上,委托就是可以用方法名调用另一方法的便捷方法,可以简化switch等语句的重复.最近做项目的时候恰好需要用到委托,便来复习及学习委托的使用.嗯...本人以前并没有用过,只是稍微知道而已 ...

  7. websocket之拨云见雾

    websocket是基于http相应的特性弥补其不足(就是个socket,不再是一次请求一次相应) 但缺点就是只有在版本较高的浏览器才支持websocket. 浏览器: <script type ...

  8. MATLAB仿真 让波形动起来

    dt=1e-6;T=2*1e-3;for N=0:500; t=N*T+(0:dt:T); input=2*cos(2*pi*1005*t); carrier=5*cos(2*pi*(1e4)*t+0 ...

  9. Spring Framework Part3 IoC and Dynamic Proxy

    spring serious of blog edit by 马士兵教育 Maven方式创建Spring工程 工程创建 1.新建项目 选择Maven Project 2.勾选 Create a sim ...

  10. 将.py文件转换成.exe文件

    1.安装pyinstaller模块 pip install pyinstaller 2.打开python目录下的scripts文件夹 cmd下,使用pyinstaller -F test.py,运行后 ...