一 自定义注解语法
[public] @interface Annotation的名称
{
[数据类型 变量名称();]
}
要自定义注解,需要使用@interface方式进行定义,在定义注解时也可以定义各种变量,但是变量之后必须使用括号()。
提示:使用@interface就相对于继承了Annotation接口。在程序中使用@interface声明Annotation,那么此Annotation实际相对于继承了Annotation接口。
二 什么都不做的自定义注解
1 代码
//定义了MyAnnoation注解,其中没有定义任何变量,这里仅仅给出一个演示框架
@interface MyAnnoation
{
//do nothing
}
class Test
{
//演示使用自定义注解
@MyAnnoation
public static void main(String[] args)
{
System.out.println("hello MyAnnoation");
}
}
2 运行结果
hello MyAnnoation
三 定义了变量的自定义注解
1 代码
//定义了AnnoationVar注解,其中声明了两个变量key和value。
@interface AnnoationVar
{
public String key();
public String value();
}
class TestAnnoationVar
{
//使用了“变量名=值”的形式为自定义注解变量赋值
@AnnoationVar(key="var1",value = "test")
public static void main(String[] args)
{
System.out.println("hello AnnoationVar");
}
}
2 运行结果
hello AnnoationVar
3 注意
如果在自定义注解中声明了变量,但没有设置默认值,则在使用该注解时必须为变量赋值。
四 自定义变量中设置了默认值
1 代码
//定义了注解AnnoationDefault,声明了两个变量key和value,并分别设置了默认值
@interface AnnoationDefault
{
public String key() default "var1";
public String value() default "value1";
}
class TestAnnoationDefault
{
//使用了注解,没有为变量赋值,编译器会自动使用默认值为变量赋值
@AnnoationDefault()
public static void main(String[] args)
{
System.out.println("hello TestAnnoationDefault");
}
}
2 运行结果
hello TestAnnoationDefault
五 枚举在自定义注解中的应用
1 代码
@interface AnnoationEnum
{
public Color color();
}
enum Color
{
RED,GREEN,BLUE;
}
class TestAnnoationEnum
{
@AnnoationEnum(color =Color.BLUE)
public static void main(String[] args)
{
System.out.println("hello TestAnnoationEnum");
}
}
2 运行结果
hello TestAnnoationEnum
六 说明
本篇仅介绍了自定义注解的定义和使用,但真正背后的实现原理没有介绍,它会用到反射机制,后面文章再介绍。