Android IntDef与StringDef注解

这篇文章只是想让自己记住这两个注解,之前见过几次,不用就忘了,再看到又有些陌生,用这篇博客来记住它吧。想说一下这两个注解,大家都清楚在Android中,官方并不推荐使用enum因为它占用的内存相对较大,对于比较吃内存的应用我们可能会选择静态常亮,但是有些地方我们只想让它赋予指定的一个范围的值,这个时候静态常量就没有办法用来检查了我们需要用的地方是不是自己想要的值,这个时候可以使用这两个注解来完成,它会在编译的时候检查我们的赋值是否符合要求。提前发现错误。
添加依赖
dependencies {
compile fileTree(include: [‘*.jar’], dir: ‘libs’)

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

然后编写使用
public class MainActivity extends Activity {

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({SUNDAY, MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY})
@Retention(RetentionPolicy.SOURCE)
public @interface WeekDays {}

@WeekDays int currentDay = SUNDAY;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setCurrentDay(WEDNESDAY);

    @WeekDays int today = getCurrentDay();

    switch (today){
        case SUNDAY:
            break;
        case MONDAY:
            break;
        case TUESDAY:
            break;
        case WEDNESDAY:
            break;
        case THURSDAY:
            break;
        case FRIDAY:
            break;
        case SATURDAY:
            break;
        default:
            break;
    }

}

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

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

}
用着还是很方便的
StringDef与IntDef的 in same manner

猜你喜欢

转载自blog.csdn.net/huihuishou_su/article/details/78839046
今日推荐