• 注解相关


    通过注解限定参数类型

    首先了解注解的概念。
    注解:给程序中的元素(类,方法,字段)添加注释。
    元注解:注解的注解称为元注解,来看下常见的元注解有

    @Retention
    指示注解内容要保留多久。默认为 RetentionPolicy.CLASS。
    RetentionPolicy 是枚举类,定义了三种保留策略。

    SOURCE
    仅在源码阶段保留,编译时会丢弃注解。
    CLASS
    Class文件中,编译器将把注解记录在类文件中,但在运行时虚拟机 不需要保留注解。
    RUNTIME
    运行时,编译器将把注解记录在类文件中,在运行时虚拟机将保留注解,因此可以反射性地读取。
    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.ANNOTATION_TYPE)
    public @interface Retention {
    /**
    * 返回保留策略
    */
    RetentionPolicy value();
    }

    @Target
    注解目标类型,指示注解所适用的程序元素的类型。
    常用的程序元素类型(ElementType)有:

    TYPE
    类、接口(包括注释类型)或枚举声明
    FIELD
    字段(包括枚举常量)
    METHOD
    方法
    PARAMETER
    参数
    CONSTRUCTOR
    构造方法
    ANNOTATION_TYPE
    注释类型
    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.ANNOTATION_TYPE)
    public @interface Target {
    /**
    * 返回可应用注解的元素类型的数组
    */
    ElementType[] value();
    }

    当需要定义固定的几种状态值时,可以使用枚举或者注解,下面使用注解来表示加载数据的状态。

    使用注解@IntDef限定其值必须为显式声明常量之一。

    /**
    * 通过注解限定类型
    * LOADING 加载中
    * CONTENT 加载完成,显示内容
    * EMPTY 加载完成,数据为空
    * ERROR 加载出错
    */
    @IntDef(value = {StateType.LOADING, StateType.CONTENT, StateType.EMPTY, StateType.ERROR})
    @Retention(RetentionPolicy.SOURCE)
    public @interface StateType {
    int LOADING = 1;
    int CONTENT = 2;
    int EMPTY = 3;
    int ERROR = 4;
    }

    定义好值之后,就可以使用注解限定参数类型,这样可以避免传入限定以外的值。

    private int state = StateType.CONTENT;
    private void setState(@StateType int state) {
    this.state = state;
    }
    ————————————————
    版权声明:本文为CSDN博主「JoeLittleStar」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhouxinxin250/article/details/98774293

  • 相关阅读:
    Java操作excel
    (13)C++ 多态
    (12)C++ 继承
    (18)C++ string和标准模板库
    parseInt(str),parseFloat(str)
    JavaScript substring() 方法
    JavaScript遍历对象中所有元素
    JavaScript中的number跟string
    mybatis动态sql
    Android数据存储之Android 6.0运行时权限下文件存储的思考
  • 原文地址:https://www.cnblogs.com/softidea/p/11792078.html
Copyright © 2020-2023  润新知