对于枚举来说占用的内存往往是使用静态常量的两倍,因而我们要尽量避免在Android中使用枚举。
因而使用@IntDef注解来代替枚举是个不错的选择。
主要代码如下,使用了@IntDef注解
@StringDef的用法类似
//activity code
public class MainActivity extends AppCompatActivity { public static final int January = 0; public static final int February = 1; public static final int March = 2; // public static final int April = 3; // public static final int May = 4; // public static final int June = 5; // public static final int July = 6; // public static final int August = 7; // public static final int September = 8; // public static final int October = 9; // public static final int November = 10; // public static final int December = 11; @IntDef(value = {January, February}) @Retention(RetentionPolicy.SOURCE) public @interface Months{} @Months int mCurrentMonth = getCurrentMonth(); TextView mTx; @SuppressLint("WrongConstant") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTx = (TextView)findViewById(R.id.month); setCurrentMonth(1); mTx.setText(getCurrenMonthStr(getCurrentMonth())); } public void setCurrentMonth(@Months int month ){ this. mCurrentMonth = month; } public int getCurrentMonth(){ return mCurrentMonth; } public String getCurrenMonthStr(@Months int month){ String name; switch(month){ case January: name = "January"; break; case February: name = "February"; break; case March: name = "March"; break; default: name = "Default"; break; } return name; } }