java8新特性:重复注解与类型注解

2025-10-29 10:15:46

1、定义一个注解类:

package com.gwolf;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;

import static java.lang.annotation.ElementType.CONSTRUCTOR;

import static java.lang.annotation.ElementType.LOCAL_VARIABLE;

@Repeatable(MyAnnocations.class)

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})

@Retention(RetentionPolicy.RUNTIME)

public @interface MyAnnocation {

    String value() default  "gwolf";

}

java8新特性:重复注解与类型注解

2、定义一个注解容器类

package com.gwolf;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})

@Retention(RetentionPolicy.RUNTIME)

public @interface MyAnnocations {

    MyAnnocation[] value();

}

java8新特性:重复注解与类型注解

3、定义重复注解:

package com.gwolf;

public class TestAnotation {

    

    @MyAnnocation("Hello")

    @MyAnnocation("World")

    public void show() {

        

    }

}

java8新特性:重复注解与类型注解

4、类型注解关键字:TYPE_PARAMETER

@Repeatable(MyAnnocations.class)

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,TYPE_PARAMETER})

@Retention(RetentionPolicy.RUNTIME)

public @interface MyAnnocation {

    String value() default  "gwolf";

}

java8新特性:重复注解与类型注解

5、使用类型注解:

public  void test(@MyAnnocation("abc") String str) {

        Class<TestAnotation> clazz = TestAnotation.class;

    }

java8新特性:重复注解与类型注解

6、整体程序代码如下:

package com.gwolf;

import java.lang.reflect.Method;

public class TestAnotation {

    

    @MyAnnocation("Hello")

    @MyAnnocation("World")

    public void show() {

        

    }

    

    public  void test(@MyAnnocation("abc") String str) {

        Class<TestAnotation> clazz = TestAnotation.class;

    }

}

java8新特性:重复注解与类型注解

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢