当前位置: 首页 > 编程笔记 >

Java8新增的重复注解功能示例

娄学文
2023-03-14
本文向大家介绍Java8新增的重复注解功能示例,包括了Java8新增的重复注解功能示例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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程序设计有所帮助。

 类似资料:
  • TypeScript 3.0 TypeScript 2.9 TypeScript 2.8 TypeScript 2.7 TypeScript 2.6 TypeScript 2.5 TypeScript 2.4 TypeScript 2.3 TypeScript 2.2 TypeScript 2.1 TypeScript 2.0 TypeScript 1.8 TypeScript 1.7 TypeS

  • 更丰富的工作区工具 文档中的多个画板可以创建包含多达 100 个不同尺寸画板的多页文件。创建的多个画板,可以重叠、平铺或堆叠在一起。也可以单独或统一保存、导出和打印画板。多个画板将代替 “裁剪区域 ”工具。(请参阅第 31 页的 “使用多个画板 ”。) 资源 以选项卡形式排列的文档窗口和 “文档排列 ”面板 将多页文档以选项卡排列的形式显示或将其并排打开,这样就可以轻松进行比较或将项目从一个文档拖

  • Windows 注册表设置的新增功能 Microsoft® Jet 4.x 版提供四种修改 Microsoft Windows® 注册表设置的方法。除使用 Regedit.exe 来改写默认设置,或在应用程序注册表树中创建一个部分来管理设置外,您还可以从 DAO 中使用 SetOption 方法或使用 Microsoft OLE DB Provider for Jet 中的连接属性来修改注册表设置

  • Windows 注册表设置的新增功能 Microsoft® Jet 4.x 版提供四种修改 Microsoft Windows® 注册表设置的方法。除使用 Regedit.exe 来改写默认设置,或在应用程序注册表树中创建一个部分来管理设置外,您还可以从 DAO 中使用 SetOption 方法或使用 Microsoft OLE DB Provider for Jet 中的连接属性来修改注册表设置

  • 了解 Illustrator 最新版本的新增功能。 Illustrator 2018 年 10 月版(版本 23.0)为设计人员和插图制作人员推出了一些激动人心的新功能。请阅读下文以了解这些新增功能的快速介绍以及提供详细信息的资源链接。   任意形状渐变 由 Adobe Sensei 提供支持 Illustrator 现在提供一个新的叫做任意形状的渐变类型,它提供了新的颜色混合功能,可以创建更自然

  • 主要新增功能 2019 年 6 月版(版本 9.1) 用户界面更新 体验菜单栏、标签和评级的外观增强功能。使用“图像背景”滑块调整背景对比度。 代理服务器支持 可在代理环境中使用 Creative Cloud 库、Adobe Stock、Adobe Portfolio 和 Adobe Stock Contributor 等服务。 修复的问题 查找针对堆栈问题以及 PDF 输出颜色问题的修复。 透明