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 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新增的重复注解功能示例相关推荐
- 服务器安全狗V4.1增强版 新增修复多项功能
2019独角兽企业重金招聘Python工程师标准>>> 服务器安全狗V4.1增强版发布咯,用户朋友们可直接在线升级或到官网下载安装使用. 2014年4月1日发布,服务狗主要针对以下几 ...
- Java8 重复注解与类型注解
Java8 重复注解与类型注解 定义重复注解 @Repeatable(RepeatAnnotations.class) 类型注解 @Target(ElementType.PARAMETER) /*** ...
- JDK8新特性(十五)之重复注解、类型注解
一.重复注解 自从Java 5中引入注解以来,注解开始变得非常流行,并在各个框架和项目中被广泛使用.不过注解有一个很大的限制是:在同一个地方不能多次使用同一个注解.JDK8引入了重复注解的概念,允许在 ...
- java8 重复注解_Java8新特性_重复注解与类型注解
1.总结 1.忘记注解上该写什么时,可以随意写一个注解然后点击进去参考.复制 2.默认情况下不支持重复注解,需要定义容器 3.标注注解为@Repeatable 4.若需要获取注解的值,可以通过反射获取 ...
- Java 8 新特性:扩展注解(类型注解和重复注解)
转载自 Java 8 新特性:扩展注解(类型注解和重复注解) (注:先回顾下JDK1.5版本出现的注解 ,然后再解释JDK 8的注解 更新内容.) 一.注解(JDK1.5) 1.注解(@): 注解就 ...
- Java 8新特性探究(五)重复注解(repeating annotations)
2019独角兽企业重金招聘Python工程师标准>>> 知识回顾 前面介绍了: lambda表达式和默认方法 (JEP 126) 批量数据操作(JEP 107) 类型注解(JEP 1 ...
- 注解详解和Spring注解增强(基础内功)
本文内容 什么是注解? 如何定义注解 如何使用注解 如何获取注解信息 Spring 中对注解做了什么增强? 什么是注解? 什么是代码中写的注释?那是给开发者看的,但是编译之后的字节码文件中是没有注释信 ...
- java repeatable_java8 新增的@Repeatable注解
* java8 新增的@Repeatable注解,其实只是语法糖而已. * java8 注解的 {@linkRepeatAnn} 类与 {@linkAnnotations}是等价的. * 新注解讲语法 ...
- java注解字段类型相同_《java基础学习之——重复注解》
在某些情况下,您要将相同的注释应用于声明或类型使用.从JavaSE 8版本开始,重复注释使您能够做到这一点. 例如,您正在编写代码以使用定时服务,使您能够在给定时间或某个时间表运行方法,类似于UNIX ...
最新文章
- android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
- react.JS并非完全开源,百度、Wordpress等带头弃之
- centOS 及 ubuntu 下载地址记录
- php7 编译 pdo mysql_php7 编译 pdo_mysql 问题, [mysql_driver.lo] Error 1
- vscode中自动修复eslint的项目语法错误
- 长春市职称计算机考试成绩查询,长春市助理工程师查询网站
- 图benchmark
- 传智播客风清扬视频------异常简述
- lol java_浅谈设计模式(java)——从lol来看观察者模式
- 德鲁克管理思想精髓的17个关键词
- ubuntu 下载 wps 及 字体缺失问题
- 解读人工智能产业的2020:认知AI还未实现,我们仍然正在路上
- html复习第六天 京东首页布局(导航栏/左侧)
- 计算机缓存Cache以及Cache Line详解
- CentOS 7 配置DNS服务
- Oracle数据库基本常用命令
- 对flash cs5的展望
- “重参数宇宙”再添新成员:RepMLP,清华大学旷视科技提出将重参数卷积嵌入到全连接层
- 发票 税率 普票 增值税发票
- linux 软件 格式化u盘启动盘,使用syslinux制作U盘启动盘的方法