- Java类
- Java包
- Java方法
- Java访问
- Java创建
- Java对象(Object)
- Java内部类
- Java继承
- Java抽象类
- Java泛型类
- Java异常
- Java接口
- Java枚举
- Java注解
Java注解用法
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
注解类型注释程序元素,可以使用@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 { }
如果在使用注释时只提供一个值,则元素的名称为假设那个值。
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王