我是靠谱客的博主 精明篮球,最近开发中收集的这篇文章主要介绍java 8 新特性之重复注解与类型注解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java 8对注解处理提供了两点改进:可重复的注解及可用于类型的注解。

 1、自定义可重复注解:使用@Repeatable元注解,参数为可重复注解的容器

@Repeatable(MyAnnotations.class)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE, TYPE_PARAMETER, TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String value() default "java";
}

 2、注解容器定义(可重复注解的容器的Target和Retention必须要比可重复注解的范围大)

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE, TYPE_PARAMETER, TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotations {
    MyAnnotation[] value();
}

3、Java 8为ElementType枚举增加了TYPE_PARAMETER、TYPE_USE两个枚举值,这样就允许定义枚举时使用@Target(ElementType.TYPE_USE)修饰,这种注解被称为Type Annotation(类型注解),Type Annotation可用在任何用到类型的地方。从Java 8开始,Type Annotation可以在任何用到类型的地方使用。

public class TestAnnotationn {

    @MyAnnotation
    private @MyAnnotation String test;

    @MyAnnotation("python")
    @MyAnnotation("php")
    public void show() {
    }

    public @MyAnnotation void test(@MyAnnotation("c") String str) {
        Class<@MyAnnotation TestAnnotationn> clazz = TestAnnotationn.class;
    }

    @Test
    public void test1() {
        Class<TestAnnotationn> clazz = TestAnnotationn.class;
        Method[] me = clazz.getDeclaredMethods();
        for (Method method : me) {
        if ("test".equalsIgnoreCase(method.getName())) {
                Annotation[][] parameterAnnotations = method.getParameterAnnotations();
                for (Annotation[] c : parameterAnnotations) {
                    for (Annotation annotation : c) {
                        System.out.print(((MyAnnotation) annotation).value());
                    }
                }
                MyAnnotation[] annotationsByType = method.getAnnotationsByType(MyAnnotation.class);
                for (MyAnnotation myAnnotation : annotationsByType) {
                    System.out.println(myAnnotation.value());
                }
            }
        }
    }
}

 

最后

以上就是精明篮球为你收集整理的java 8 新特性之重复注解与类型注解的全部内容,希望文章能够帮你解决java 8 新特性之重复注解与类型注解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部