zoukankan      html  css  js  c++  java
  • @Repeatable元注解的使用

    @Repeatable注解表明标记的注解可以多次应用于相同的声明或类型,此注解由Java SE 8版本引入。以下示例如何使用此注解:

    第一步,先声明一个重复注解类:

    package org.springmorning.demo.javabase.annotation.meta;
    
    import java.lang.annotation.Repeatable;
    
    /**
     * @author 春晨
     * @date 2019/1/14 20:25
     * Copyright ©2019 春晨 https://www.cnblogs.com/springmorning/p/10279083.html
     */
    @Repeatable(Schedules.class)
    public @interface Schedule {
        String dayOfMonth() default "first";
        String dayOfWeek() default "Mon";
        int hour() default 12;
    }

    第二步,再声明一个容器注解类:

    package org.springmorning.demo.javabase.annotation.meta;
    
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    
    /**
     * @author 春晨
     * @date 2019/1/14 20:26
     * Copyright ©2019 春晨 https://www.cnblogs.com/springmorning/p/10279083.html
     */
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Schedules {
        Schedule[] value();
    }

    最后,创建一个测试类:

    package org.springmorning.demo.javabase.annotation.meta;
    
    import java.lang.reflect.Method;
    
    /**
     * @author 春晨
     * @date 2019/1/14 20:27
     * Copyright ©2019 春晨 https://www.cnblogs.com/springmorning/p/10279083.html
     */
    @Schedule(dayOfMonth="last")
    @Schedule(dayOfWeek="Wed", hour=24)
    public class RepetableAnnotation{
    
        @Schedule(dayOfMonth="last")
        @Schedule(dayOfWeek="Fri", hour=23)
        public void doPeriodicCleanup(){}
    
        public static void main(String[] args) throws NoSuchMethodException {
    
            Method doPeriodicCleanup = RepetableAnnotation.class.getMethod("doPeriodicCleanup");
    
            Schedules schedules = doPeriodicCleanup.getAnnotation(Schedules.class);
            System.out.println("获取标记方法上的重复注解:");
            for (Schedule schedule: schedules.value()){
                System.out.println(schedule);
            }
    
            System.out.println("获取标记类上的重复注解:");
            if (RepetableAnnotation.class.isAnnotationPresent(Schedules.class)){
                schedules = RepetableAnnotation.class.getAnnotation(Schedules.class);
                for (Schedule schedule: schedules.value()){
                    System.out.println(schedule);
                }
            }
    
        }
    }

    运行结果:

    获取标记方法上的重复注解:
    @org.springmorning.demo.javabase.annotation.meta.Schedule(hour=12, dayOfMonth=last, dayOfWeek=Mon)
    @org.springmorning.demo.javabase.annotation.meta.Schedule(hour=23, dayOfMonth=first, dayOfWeek=Fri)
    获取标记类上的重复注解:
    @org.springmorning.demo.javabase.annotation.meta.Schedule(hour=12, dayOfMonth=last, dayOfWeek=Mon)
    @org.springmorning.demo.javabase.annotation.meta.Schedule(hour=24, dayOfMonth=first, dayOfWeek=Wed)

     下节继续

        下节将给大家讲解预定义注解@Override的使用

  • 相关阅读:
    PLSQL导入导出oracle表 表空间
    IDL(Interactive Data Language——交互式数据语言)
    easyui更改messager的OkCancel按钮为(中文)确定取消
    java 中判断字符串相等
    hql实现对表的某几个(部分)字段查询
    MyEclipse 断点打不上 提示 absent line number information
    cocos2dx-3.x 导出自定义类到 lua 过程
    cocos2d-x中DrawNode常见的图像绘制函数
    cocos2d环境及创建一个自己的项目
    cocos2d基本类介绍 director/scene/layer/sprite
  • 原文地址:https://www.cnblogs.com/springmorning/p/10279083.html
Copyright © 2011-2022 走看看