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

java8 注解增强_Java8新增的重复注解功能示例相关推荐

  1. 服务器安全狗V4.1增强版 新增修复多项功能

    2019独角兽企业重金招聘Python工程师标准>>> 服务器安全狗V4.1增强版发布咯,用户朋友们可直接在线升级或到官网下载安装使用. 2014年4月1日发布,服务狗主要针对以下几 ...

  2. Java8 重复注解与类型注解

    Java8 重复注解与类型注解 定义重复注解 @Repeatable(RepeatAnnotations.class) 类型注解 @Target(ElementType.PARAMETER) /*** ...

  3. JDK8新特性(十五)之重复注解、类型注解

    一.重复注解 自从Java 5中引入注解以来,注解开始变得非常流行,并在各个框架和项目中被广泛使用.不过注解有一个很大的限制是:在同一个地方不能多次使用同一个注解.JDK8引入了重复注解的概念,允许在 ...

  4. java8 重复注解_Java8新特性_重复注解与类型注解

    1.总结 1.忘记注解上该写什么时,可以随意写一个注解然后点击进去参考.复制 2.默认情况下不支持重复注解,需要定义容器 3.标注注解为@Repeatable 4.若需要获取注解的值,可以通过反射获取 ...

  5. Java 8 新特性:扩展注解(类型注解和重复注解)

    转载自  Java 8 新特性:扩展注解(类型注解和重复注解) (注:先回顾下JDK1.5版本出现的注解 ,然后再解释JDK 8的注解 更新内容.) 一.注解(JDK1.5) 1.注解(@): 注解就 ...

  6. Java 8新特性探究(五)重复注解(repeating annotations)

    2019独角兽企业重金招聘Python工程师标准>>> 知识回顾 前面介绍了: lambda表达式和默认方法 (JEP 126) 批量数据操作(JEP 107) 类型注解(JEP 1 ...

  7. 注解详解和Spring注解增强(基础内功)

    本文内容 什么是注解? 如何定义注解 如何使用注解 如何获取注解信息 Spring 中对注解做了什么增强? 什么是注解? 什么是代码中写的注释?那是给开发者看的,但是编译之后的字节码文件中是没有注释信 ...

  8. java repeatable_java8 新增的@Repeatable注解

    * java8 新增的@Repeatable注解,其实只是语法糖而已. * java8 注解的 {@linkRepeatAnn} 类与 {@linkAnnotations}是等价的. * 新注解讲语法 ...

  9. java注解字段类型相同_《java基础学习之——重复注解》

    在某些情况下,您要将相同的注释应用于声明或类型使用.从JavaSE 8版本开始,重复注释使您能够做到这一点. 例如,您正在编写代码以使用定时服务,使您能够在给定时间或某个时间表运行方法,类似于UNIX ...

最新文章

  1. android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
  2. react.JS并非完全开源,百度、Wordpress等带头弃之
  3. centOS 及 ubuntu 下载地址记录
  4. php7 编译 pdo mysql_php7 编译 pdo_mysql 问题, [mysql_driver.lo] Error 1
  5. vscode中自动修复eslint的项目语法错误
  6. 长春市职称计算机考试成绩查询,长春市助理工程师查询网站
  7. 图benchmark
  8. 传智播客风清扬视频------异常简述
  9. lol java_浅谈设计模式(java)——从lol来看观察者模式
  10. 德鲁克管理思想精髓的17个关键词
  11. ubuntu 下载 wps 及 字体缺失问题
  12. 解读人工智能产业的2020:认知AI还未实现,我们仍然正在路上
  13. html复习第六天 京东首页布局(导航栏/左侧)
  14. 计算机缓存Cache以及Cache Line详解
  15. CentOS 7 配置DNS服务
  16. Oracle数据库基本常用命令
  17. 对flash cs5的展望
  18. “重参数宇宙”再添新成员:RepMLP,清华大学旷视科技提出将重参数卷积嵌入到全连接层
  19. 发票 税率 普票 增值税发票
  20. linux 软件 格式化u盘启动盘,使用syslinux制作U盘启动盘的方法

热门文章

  1. jQuery UI Download
  2. 用服务器控件在后台调用前台客户端JS方法
  3. 深度学习入门之感知器(原理+代码)
  4. 【TensorFlow】tf.concat的用法
  5. YOLO v3解析与实现
  6. Anaconda:conda install packages error 详解channel 设置
  7. 【Python】sort 和 sorted 的用法区别
  8. [云炬创业管理笔记]第6章制定创业行动测试3
  9. 科大星云诗社动态20210327
  10. 云炬VB开发笔记 1初始Visual Basic基础