android开发Enum (枚举)的完美替代 —— @IntDef的使用

转载 2015年11月21日 10:52:56

     官方文档说明,安卓开发应避免使用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;
  
    //用 <span></span>@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;
    }
}

使用注解库

这些注解不是默认加载的,它们被包装为一个单独的库。Support Library现在是由一些更小的库组成的,包括:v4-support、appcompat、gridlayout、mediarouter等等。
添加注解的最简单的方法就是打开Project Structure对话框。首先在左边选中module,然后右边选中Dependencies标签,点击“+”号按钮,选择Library Dependency。如果SDK中已经包括了Android Support库,那么注解支持库就会显示在快捷选择列表中了,只需要点击选择就可以。
步骤1:点击Project Structure按钮



步骤2:选中Dependencies标签,点击“+”号按钮


步骤3:在下拉列表中选中support-annotations库


点击OK确定,这将会修改build.gradle文件。当然也可以手动在Gradle中添加如下依赖:
dependencies {
    compile 'com.android.support:support-annotations:23.1.0'
}


使用注解@IntDef替代枚举

开始之前我们先看看Android 官方文档中的一段话。Be careful with code abstractionsDevelopers often use abstractions simply...
  • StevenDuan17
  • StevenDuan17
  • 2017年01月22日 15:19
  • 2275

Android开发小技巧@IntDef(译 )

Android开发小技巧@IntDefTip使用IntDef不仅可以使你的代码更具可读性,也可以让lint阻止你犯错,所以能够让你写代码更快解释@IntDef 是我最喜欢的注释,在( support....
  • zhangle1hao
  • zhangle1hao
  • 2016年10月23日 10:52
  • 1087

android开发Enum (枚举)的完美替代 —— @IntDef的使用

官方文档说明,安卓开发应避免使用Enum(枚举类),因为相比于静态常量Enum会花费两倍以上的内存。参  http://developer.android.com/training/articles/...
  • young21234
  • young21234
  • 2015年11月21日 10:52
  • 10227

Android开发中用于替代Enum的@IntDef的使用

在Android的官方文档的内存管理中http://developer.android.com/training/articles/memory.html#Overhead提到由于Enum通常需要两倍...
  • codingismylife
  • codingismylife
  • 2015年11月07日 15:34
  • 2733

android中 IntDef注解的使用

替代android中枚举的方案,代码如下public class MyEnum {/** * 用IntDef 包含几个常亮 * 枚举类名用接口替代 */ @IntDef({ONE,TWO,THR...
  • wwwbjj1988
  • wwwbjj1988
  • 2016年07月28日 17:45
  • 409

android开发Enum (枚举)的完美替代 —— @IntDef的使用

官方文档说明,安卓开发应避免使用Enum(枚举类),因为相比于静态常量Enum会花费两倍以上的内存。参 http://developer.android.com/training/articles/m...
  • love_yan_1314
  • love_yan_1314
  • 2017年03月05日 16:17
  • 399

【Android】IntDef用法示例\API说明:比int更安全,比enum更轻量

今天在研究Toast中无意看到Toast的如下源码:发现它在用IntDef,遂把它的用法记录一下:public class Toast { static final String TAG = ...
  • KyleCeshen
  • KyleCeshen
  • 2015年12月08日 09:47
  • 2427

Android enum(枚举类型)使用详解

原始的接口定义常量: public interface IConstants { String MON = "Mon"; String TUE = "Tue"; Stri...
  • a78270528
  • a78270528
  • 2015年07月18日 22:13
  • 28968

android开发之避免使用枚举

Java1.5中引入了枚举的语法,包括Enum,EnumSet,EnumMap等。其中Enum就是我们在C或C++中见过的枚举类型,但是Java中的枚举又比C或C++中的枚举更成熟和复杂。在Java中...
  • zjd934784273
  • zjd934784273
  • 2017年01月22日 17:46
  • 534

java 枚举——java(android)中枚举的运用和使用场景

如果作为一个java开发工程师还不了解或者还不能很好的运用枚举这个新特性的话,那你就得好好看一看枚举了。因为枚举在java5以后是个很好用的新特性。...
  • yehui928186846
  • yehui928186846
  • 2016年05月16日 16:57
  • 3848
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android开发Enum (枚举)的完美替代 —— @IntDef的使用
举报原因:
原因补充:

(最多只允许输入30个字)