Androi--开发 之 Enum (枚举) —— @IntDef的使用

来源:互联网 发布:python ffmpeg 库安装 编辑:程序博客网 时间:2024/06/06 17:38

Android 开发 之 Enum (枚举) —— @IntDef的使用

https://my.oschina.net/Bruce370/blog/499279?p={{page}}




    官方文档说明,安卓开发应避免使用Enum(枚举类),因为相比于静态常量Enum会花费两倍以上的内存。参 http://developer.android.com/training/articles/memory.html#Overhead

    那么如果需要使用Enum应该怎么做呢?

    https://noobcoderblog.wordpress.com/2015/04/12/java-enum-and-android-intdefstringdef-annotation/

     

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 "包住" 常量;    // @Retention 定义策略    // 声明构造器    @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;    }}



build.gradle中

compile'com.android.support:support-annotations:22.0.0'


 

阅读全文
0 0