Java8新增的重复注解功能示例
作者:cakincqm 时间:2022-09-06 22:49:58
本文实例讲述了Java8新增的重复注解功能。分享给大家供大家参考,具体如下:
一 点睛
在Java 8以前,同一个程序元素前最多只能使用一个相同类型的Annotation;如果需要在同一个元素前使用多个相同类型的Annotation,则必须使用Annotation“容器”。
为了将该注解改造成重复注解,需要使用@Repeatable修饰该注解,使用@Repeatable时必须为value成员变量指定值。
二 实战
1 定义重复注解
import java.lang.annotation.*;
// 指定该注解信息会保留到运行时
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Repeatable(FkTags.class)
public @interface FkTag
{
// 为该注解定义2个成员变量
String name() default "疯狂软件";
int age();
}
2 定义重复注解容器
import java.lang.annotation.*;
// 指定该注解信息会保留到运行时
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FkTags
{
// 定义value成员变量,该成员变量可接受多个@FkTag注解
FkTag[] value();
}
3 测试
@FkTag(age=5)
@FkTag(name="疯狂Java" , age=9)
//@FkTags({@FkTag(age=5),
// @FkTag(name="疯狂Java" , age=9)})
public class FkTagTest
{
public static void main(String[] args)
{
Class<FkTagTest> clazz = FkTagTest.class;
/* 使用Java 8新增的getDeclaredAnnotationsByType()方法获取
修饰FkTagTest类的多个@FkTag注解 */
FkTag[] tags = clazz.getDeclaredAnnotationsByType(FkTag.class);
// 遍历修饰FkTagTest类的多个@FkTag注解
for(FkTag tag : tags)
{
System.out.println(tag.name() + "-->" + tag.age());
}
/* 使用传统的getDeclaredAnnotation()方法获取
修饰FkTagTest类的@FkTags注解 */
FkTags container = clazz.getDeclaredAnnotation(FkTags.class);
System.out.println(container);
}
}
三 运行
疯狂软件-->5
疯狂Java-->9
@FkTags(value=[@FkTag(name=疯狂软件, age=5), @FkTag(name=疯狂Java, age=9)])
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
来源:https://blog.csdn.net/chengqiuming/article/details/95853236
标签:Java8,重复注解
0
投稿
猜你喜欢
c#将list类型转换成DataTable方法示例
2023-06-27 12:02:08
C# 抽象类,抽象属性,抽象方法(实例讲解)
2022-03-14 09:22:16
C#生成唯一值的方法汇总
2023-11-09 07:25:21
Spring Boot thymeleaf模板引擎的使用详解
2022-07-27 07:42:54
JAVA发送HTTP请求的多种方式详细总结
2021-06-15 14:43:48
maven如何打包动态环境变量(包括启动脚本)
2023-07-16 03:48:56
C# 使用鼠标点击对Chart控件实现数据提示效果
2023-03-05 14:20:06
Android自定义相机Camera实现手动对焦的方法示例
2022-08-23 14:45:11
基于c# Task自己动手写个异步IO函数
2021-08-06 12:07:56
Java ArrayList实现删除指定位置的元素
2023-11-25 05:34:13
Kotlin基础教程之Run,标签Label,函数Function-Type
2022-08-28 14:11:01
Java获取上月份最后一天日期8位的示例代码
2023-08-12 14:10:38
C#实现Array,List,Dictionary相互转换
2022-10-09 13:51:39
Unity3D运行报DllNotFoundException错误的解决方案
2021-09-13 00:22:35
c# 实现康威生命游戏(细胞自动机)的示例
2022-01-08 04:36:22
Java 实现将List平均分成若干个集合
2023-10-16 21:36:59
android实现扫码枪功能
2022-08-28 21:33:35
Spring/SpringBoot @RequestParam注解无法读取application/json格式数据问题解决
2023-11-26 11:26:29
Flutter利用Hero组件实现自定义路径效果的动画
2023-06-25 13:46:29
Java Exchanger并发类使用方法
2023-08-19 20:20:41