欢迎使用CSDN-markdown编辑器

但是由于枚举的优秀性,我们还是有在Android中使用枚举的价值的。为了解决这个问题,Android官方引入了两个注解,分别是StringDef和IntDef。具体方法见下:

首先引入依赖:

compile ‘com.android.support:support-annotations:22.0.0’

使用注解声明枚举类型(关于注解部分知识可以参照楼主之前的博客):

@IntDef({RED, GREEN, YELLOW})
@Retention(RetentionPolicy.SOURCE)
public @interface ColorEnum {
}

然后再次声明Pen类:

class Pen{
    @ColorEnum
    private int color;

    @ColorEnum
    public int getColor(){
        return color;
    }

    public void setColor(@ColorEnum int color){
        this.color = color;
    }
}

在主方法调用:

public static final int MALE = 0;
public static final int FEMALE = 1;
Pen pen = new Pen();
pen.setColor(MALE);

当你为pen的color属性随便给一个int值时,IDE会报错。但仅限于IDE报错,程序仍然可以运行。比如:

pen.setColor(2);

上述代码会有红色下划线并且警告,但是程序可以编译运行,这是由于RetentionPolicy.SOURCE使得注解是在源码阶段生效的,从而只有IDE代码检查工具会去判断是否正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值