Java8新特性——可重复注解

来源:互联网 发布:医院预约管理系统php 编辑:程序博客网 时间:2024/05/01 07:57

    今天是高考的日子,是大四师兄师姐答辩毕业的日子。一代又来,一代又去。好久没写博客,借此特殊日子整理一下前不久学java8新特性时写的代码,留下痕迹。(本博客的代码根据 java8新特性教程 学习整理,加上个人的理解而成,关于某个新特性的介绍代码里的注释已经阐述清楚,故不再写文字介绍,直接看代码吧!)


    本篇介绍java8的新特性之一:可重复注解。    

import java.lang.annotation.ElementType;import java.lang.annotation.Repeatable;import java.lang.annotation.Target;/** * Java8中的Annotations是可重复。 */public class RepeatableAnnotation {public static void main(String[] args) {//虽然我们从来没有在类Chinese上声明@Hints注解,但该信息还是可以通过getAnnotation(Hint.class)获得。Hint hint = Chinese.class.getAnnotation(Hint.class);System.err.println(hint);//java编译器隐式的在该注解使用中加入@Hints。这种后期处理在通过反射获取注解是十分重要的。Hints hints = Chinese.class.getAnnotation(Hints.class);System.err.println(hints.value().length);Hint[] arr = hints.value();for(Hint h : arr){System.err.println(h);}//getAnnotationsByType是一种更加便利的方法,它可以保证我们访问所有使用的@Hint注解。Hint[] hints2 = Chinese.class.getAnnotationsByType(Hint.class);System.err.println(hints2.length);}}@Repeatable(Hints.class)@interface Hint{String value();}@interface Hints{Hint[] value();}//使用容器注解@Hints({@Hint("hint1"),@Hint("hint2")})class Person{}//使用可重复注解//java编译器隐式的在该注解使用中加入@Hints。这种后期处理在通过反射获取注解是十分重要的。@Hint("hint1")@Hint("hint2")class Chinese{}//Java8中注解的使用范围扩展到两种新的类型:TYPE_PARAMETER(Type parameter declaration),TYPE_USE(Use of a type)@Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE})  @interface MyAnnotation {}  
  

详情请见这篇博客: java8新特性教程 


0 0