Java自定义注解用法实例小结
作者:cakincqm 时间:2023-03-26 09:13:51
本文实例讲述了Java自定义注解用法。分享给大家供大家参考,具体如下:
一 自定义注解语法
[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
六 说明
本篇仅介绍了自定义注解的定义和使用,但真正背后的实现原理没有介绍,它会用到反射机制,后面文章再介绍。
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
来源:https://blog.csdn.net/chengqiuming/article/details/81603935
标签:Java,自定义注解
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
基于Spring中的线程池和定时任务功能解析
2022-08-20 03:49:45
![](https://img.aspxhome.com/file/2023/0/101950_0s.png)
Java协程编程之Loom项目实战记录
2023-10-23 17:44:06
![](https://img.aspxhome.com/file/2023/3/89613_0s.png)
mybatis-plus乐观锁实现方式详解
2022-09-27 16:12:27
![](https://img.aspxhome.com/file/2023/5/66175_0s.png)
Java8如何使用Lambda表达式简化代码详解
2023-02-20 04:44:58
C#中==(双等于号)与equals()区别详解
2021-09-21 18:49:42
![](https://img.aspxhome.com/file/2023/0/70440_0s.png)
Java的super关键字与instanceof运算符使用方法
2022-02-18 10:02:22
Android Intent调用 Uri的方法总结
2021-11-13 22:46:53
mybatis中的if test判断入参的值问题
2023-11-16 08:13:44
![](https://img.aspxhome.com/file/2023/9/59579_0s.png)
Android实现拍照及图片裁剪(6.0以上权限处理及7.0以上文件管理)
2022-05-19 09:18:14
android获取当前手机号示例程序
2022-09-10 04:57:06
浅谈AnDroidDraw+DroidDraw实现Android程序UI设计的分析说明
2023-09-28 20:41:51
![](https://img.aspxhome.com/file/2023/1/85991_0s.jpg)
解读@RabbitListener起作用的原理
2021-08-04 12:58:59
springboot之如何获取项目目录路径
2022-08-09 21:44:17
![](https://img.aspxhome.com/file/2023/6/60796_0s.jpg)
SpringBoot登录用户权限拦截器
2022-07-15 04:18:04
Java实现线程安全单例模式的五种方式的示例代码
2023-09-26 16:41:23
Java程序图形用户界面设计之按钮与布局
2023-07-18 07:03:21
![](https://img.aspxhome.com/file/2023/2/61572_0s.png)
Unity3D UGUI实现翻书特效
2022-03-30 23:02:59
![](https://img.aspxhome.com/file/2023/0/82120_0s.jpg)
C# Web应用调试开启外部访问步骤解析
2023-04-01 15:24:01
![](https://img.aspxhome.com/file/2023/9/82159_0s.png)
Mybatis中 mapper-locations和@MapperScan的作用
2023-07-13 08:08:34
![](https://img.aspxhome.com/file/2023/0/57700_0s.png)
spring boot项目打包成war在tomcat运行的全步骤
2023-12-17 19:20:36