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注解类型注释程序元素,可以使用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 {

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值