美文网首页
注解代替枚举案例 2019-01-25

注解代替枚举案例 2019-01-25

作者: 勤劳的蚂蚁 | 来源:发表于2019-01-25 14:00 被阅读2次

title: 注解代替枚举案例 20180312

参考:
@IntDef的使用(替代枚举)

使用情形:比如 对 acitivity、 view、 fragment 中错误状态、重试状态、无网络状态等的处理 可以考虑该方式

前提:需依赖 annotations 库,如果有 'com.android.support:appcompat ..' 则不需要单独依赖(其已包含 annotations 库)

添加android注解依赖:
[java] view plain copy
compile 'com.android.support:support-annotations:25.1.0'  
//一种使用方式:

public class WeeksDays {
    @WeekDays int currentDay = SUNDAY;/*默认为 周日*/

    //先定义 常量
    public static final int SUNDAY = 0;
    public static final int MONDAY = 1;
    public static final int TUESDAY = 2;
    public static final int WEDNESDAY = 3;
    public static final int THURSDAY = 4;
    public static final int FRIDAY = 5;
    public static final int SATURDAY = 6;
    //用 @IntDef "包住" 常量;
    // @Retention 定义策略
    // 声明构造器
    @IntDef({SUNDAY, MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY})
    @Retention(RetentionPolicy.SOURCE)
    public  @interface WeekDays{

    }

    public void setCurrentDay(@WeekDays int currentDay) {
        this.currentDay = currentDay;
    }

    @WeekDays
    public int getCurrentDay() {
        return currentDay;
    }

}
//activity 中使用
public class Main2Activity extends AppCompatActivity {
    static final String TAG = "Main2Activity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        WeeksDays weeksDays = new WeeksDays();
        weeksDays.setCurrentDay(SATURDAY);
        @WeeksDays.WeekDays int today = weeksDays.getCurrentDay();
        switch (today) {
            case SUNDAY:
                Log.d(TAG,"SUNDAY");
                break;
            case MONDAY:
                Log.d(TAG,"MONDAY");
                break;
            case TUESDAY:
                Log.d(TAG,"TUESDAY");
                break;
            case WEDNESDAY:
                Log.d(TAG,"WEDNESDAY");
                break;
            case THURSDAY:
                Log.d(TAG,"THURSDAY");
                break;
            case FRIDAY:
                Log.d(TAG,"FRIDAY");
                break;
            case SATURDAY:
                Log.d(TAG,"SATURDAY");
                break;
            default:
                break;


        }

    }
}

相关文章

  • 注解代替枚举案例 2019-01-25

    title: 注解代替枚举案例 20180312 参考: @IntDef的使用(替代枚举) 使用情形:比如 对 a...

  • Effective Java 2

    五、枚举和注解 30、用enum代替int常量 132,135 31、用实例域代替序数 不要依赖于枚举的顺序编程 ...

  • Android注解全面解析

    一、注解知识体系 二、基础知识 必备基础知识:了解注解 三、注解在Android中的应用 1. 利用注解代替枚举 ...

  • effective java 第三周

    第6章 枚举和注解 第30条:用 enum 代替 int 常量 在没有 enum 之前表示枚举类型的常用模式时声...

  • 第六章

    主要讨论枚举和注解 第二十六条 用enum代替int常量1.枚举没有公有的可以访问的构造器,客户端不能创建枚举类型...

  • 实现validation注解进行校验枚举值

    背景: validation注解官方没有定义枚举类型的注解,于是这里自定义一个枚举类型注解,来实现对象的验证。 不...

  • 2020-01-31 关于枚举与数据字典

    说说什么时候使用了枚举:框架中,使用了枚举类的注解,即数据持久化时使用注解,当参数为枚举时,存入库的信息为枚举上注...

  • 枚举、注解

    枚举 类的对象只有有限个,确定的;当需要定义一组常量时,最好使用枚举类1.如何定义枚举类方式一:jdk5.0之前,...

  • Android注解笔记

    注解(Annotation) 元注解 @Target 表明我们注解可以出现的地方。是一个ElementType枚举...

  • Kotlin 高级编程语言特性代码实例

    定义接口 使用注解 实现接口 枚举类 enum class BizEnum 注解 annotation class...

网友评论

      本文标题:注解代替枚举案例 2019-01-25

      本文链接:https://www.haomeiwen.com/subject/vwpmjqtx.html