Java注解用法

注解元素的提供值必须是编译时常量表达式,不能使用null作为注解中任何类型元素的值。

基本类型

注解类型中的元素的数据类型可以是任何基本数据类型:byte,short,int,long,float,double,boolean 和 char。

Version注释类型声明两个元素:major和minor,并且都是int数据类型。

以下代码声明了注解类型:

public @interface MyAnnotation {

byte a();

short b();

int c();

long d();

float e();

double f();

boolean g();

char h();

}

@MyAnnotation(a=1, b=2, c=3, d=4, e=12.34F, f=1.89, g=true, h='Y')

可以使用编译时常量表达式来指定注解元素的值。以下两个版本注释实例有效的:

@Version(major=2+1, minor=(int)13.2)

@Version(major=3, minor=13)

字符串类型

可以在注释类型中使用String类型的元素。以下代码定义了名为Name的注解类型。 它有两个元素:first和last,它们都是String类型。

public @interface Name {

String first();

String last();

}

@Name(first="Tom", last="Smith")

public class NameTest {

@Name(first="Jack", last="Iaan")

public void aMethod() {

}

}

在String类型的元素的值表达式中使用字符串连接+运算符是有效的。

@Name(first="Ja" + "ck", last="Ia" + "an")

Class类型

以下代码显示如何使用Class类型作为注解值。

import java.io.IOException;

@interface MyAnnotation {

Class extends Throwable> willThrow() default java.lang.Throwable.class;

}

public class Main {

@MyAnnotation(willThrow = IOException.class)

public static void testCase1() {

// Code goes here

}

@MyAnnotation()

public static void testCase2() {

}

}

枚举类型

注解可以具有枚举类型的元素。

enum Level {

PENDING, FAILED, PASSED;

}

@interface Review {

Level status() default Level.PENDING;

String comments() default "";

}

@Review(status = Level.PASSED)

public class Main {

}

注解类型

可以使用注解类型作为另一个注解类型的声明内的元素的类型。要为注解类型的元素提供值,请使用用于创建注解类型实例的语法。

@interface Name {

String first();

String last();

}

@interface Version {

int major();

int minor() default 0; // zero as default value for minor

}

@interface Description {

Name name();

Version version();

String comments() default "";

}

@Description(name = @Name(first = "Tom", last = "Smith"), version = @Version(major = 1, minor = 2), comments = "Just a test class")

public class Main {

}

注解可以具有数组类型的元素。数组类型可以是以下类型之一:

原始类型

java.lang.String类型

java.lang.Class类型

枚举类型

注解类型

需要在大括号中指定数组元素的值。数组的元素由逗号分隔。

@interface ItemList {

String[] items();

}

@ItemList(items = { "A", "B" })

public class Main {

}

如果数组中只有一个元素,则允许省略括号。

@ToDo(items={"A"})

@ToDo(items="A")

传递一个空数组

@ToDo(items={})

速记注解语法

假设有一个注释类型如下。

public @interface Enabled {

boolean status() default true;

}

要使用带有默认值的Enabled注解类型注释程序元素,可以使用status元素指定值,因为它具有默认值。可以进一步省略括号。

@Enabled

public class Main {

}

@Enabled()

public class Main {

}

只有一个元素的注解类型有速记语法。如果注释类型只有一个具有命名值的元素,可以省略name = value对中的名称。以下代码声明了 Company 注解类型,它只有一个名为value的元素:

public @interface Company {

String value();

}

当使用 Company 注释时,可以省略name = value对的名称。

@Company(value="Inc.")

public class Test {

}

变成 -

@Company("Inc.")

public class Test {

}

以下代码显示了如果元素数据类型是数组,如何使用缩写。

public @interface Item {

String[] value();

}

@Item({"A", "B"})

public class Test {

}

如果在数组注释类型中只指定一个元素,可以进一步省略括号。

@Item("A")

public class Test {

}

如果在使用注释时只提供一个值,则元素的名称为假设那个值。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

java字段注解类型数组_Java注解用法相关推荐

  1. Java中char类型数组打印数组名输出结果不是地址值

    Java中其他类型数组打印数组名,输出结果都是内存地址 Java中char类型数组打印数组名,输出结果不是内存地址 char类型的数组就相当于一个字符串. 因为输出流System.out是PrintS ...

  2. java通过注解修改字段名_java注解之运行时修改字段的注解值操作

    java注解之运行时修改字段的注解值操作,注解,字段,表头,属性,对象 java注解之运行时修改字段的注解值操作 易采站长站,站长之家为您整理了java注解之运行时修改字段的注解值操作的相关内容. 今 ...

  3. java 注解报错_java注解验证接收参数 返回注解字段的错误

    1.在controller接口方法接收参数加上 @Valid注解 并且在实体类参数后紧跟 BindingResult bindingresul BindingResultMsgUtil工具类: pub ...

  4. java注解详解_Java注解详解

    Annotation是从JDK5.0开始引入的新技术. Annotation的作用:–不是程序本身,可以对程序作出解释.(这一点,跟注释没什么区别)–可以被其他程序(比如:编译器等)读取.(注解信息处 ...

  5. java注解的反射_Java注解与反射

    概要 本文主要是总结Java注解与反射的相关知识,加深自己对Java类动态语言的理解,同时为日后学习Spring打下基础. 注解: 什么是注解 Annotation的作用 不是程序本身,但是可以对程序 ...

  6. java注解使用变量_java注解的使用

    java中注解的使用 1.说再前面 使用注解开发的好处 1.使代码更加干净易读,易于维护修改.比如,以前使用spring的开发,都是基于xml文件实现了统一的配置管理,但是缺点也是显而易见的,就是随着 ...

  7. java注解怎么写_java注解

    写在前面 现在的java主流框架中,注解无处不在,因此我们完全有必要搞明白注解到底是什么.如何理解注解,它到底是怎么起作用的. 注解的定义 java是这样定义注解的:Java 注解用于为 Java 代 ...

  8. java interface作用是什么_Java注解总结:史上最全,有这一篇就够了

    什么是注解? 注解的定义 官网描述如下: Java 注解用于为 Java 代码提供元数据.作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的.Java 注解是从 Jav ...

  9. java 注解与反射_Java注解与反射直接上手

    什么是注解(Annotation) 注解顾名思义为注释.讲解,可以理解为一种标签或标记,可以用在类.方法或者域上.向类.方法等添加注解,相当于给他们贴上了一层标签. 注解使用 在使用注解时,在类名.方 ...

最新文章

  1. lightgbm保存模型参数
  2. 训练时间和参数量百倍降低,直接使用标签进行预测,性能竟超GNN
  3. 单片微型计算机与一般微型计算机相比,单片机习题与思考题.doc
  4. MySQL 8.0 CentOS 7安装手册
  5. netty系列之:文本聊天室
  6. git小乌龟一次性设置密码
  7. 京东让员工参观看守所;华为电视面世;苹果市值重回全球第一 | 极客头条
  8. Poj2259 Team Queue 【队列】
  9. Python学习手册--第一部分(使用入门)
  10. 计算机音乐apple,Apple Music苹果音乐电脑版
  11. Flash cs3教程-传统数字动画
  12. POJ 2387.Til the Cows Come Home
  13. web.xml文件详解
  14. 波兰计算机留学,波兰(Rzeczpospolita Polska)留学申请全面解析
  15. Alfresco文档管理系统 文档
  16. 郭涛 黄渤 田原09贺岁大片《高兴》DVD修正版
  17. 重庆大学计算机学院毕业设计题目,图像处理毕业设计题目.docx
  18. 什么pdf转换成word转换器在线好
  19. Linux查看某个用户账号过期信息
  20. TI电量计--BQ34Z100踩坑总结

热门文章

  1. [CQOI2017]小Q的棋盘
  2. python内置函数 exec eval compile
  3. Docker入门与应用系列(二)镜像管理
  4. Hibernate的持久化
  5. 【转】对路径**的访问被拒绝
  6. 转:TC35/TC35I/MC35I短信AT指令实例
  7. 前端js获取SpringMvc后台model中传值
  8. python-爬虫学习(文字、图片、视频)
  9. ThreadLocal剧集(一)
  10. AngularJS.js: temple