Ali*_*iSh 38 java enums android android-annotations android-support-library
我有一个枚举:
public enum AppEnums {
SERVICE_ERROR,
CONNECTION_ERROR;
}
Run Code Online (Sandbox Code Playgroud)
我想在Android Annotation的intDef中使用它:
@IntDef({AppEnums.CONNECTION_ERROR, AppEnums.SERVICE_ERROR})
public @interface ServiceErrors {
}
Run Code Online (Sandbox Code Playgroud)
错误显示:
找到不兼容的类型,必填:'long'
我能用这种不相容的方法做些什么?
我不想手动处理AppEnum参数的值,Enum通常会自动创建值.AppEnums.CONNECTION_ERROR.ordinal()
返回enum参数的int值,但这里不起作用.
Ole*_* K. 52
IntDef
注释的主要思想是使用一组int
常量,如a enum
,但没有 enum
.在这种情况下,您必须手动声明所有常量.
@IntDef({Status.IDLE, Status.PROCESSING, Status.DONE, Status.CANCELLED})
@Retention(RetentionPolicy.SOURCE)
@interface Status {
int IDLE = 0;
int PROCESSING = 1;
int DONE = 2;
int CANCELLED = 3;
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到详细的例子.
Bha*_*gav 11
好吧,你不能那样做.AppEnums.SERVICE_ERROR
永远不会回来int
; 它会回来AppEnums.SERVICE_ERROR
.这是枚举类型的重点.
我的建议是:
public static class AppEnums {
public static final int CONNECTION_ERROR = 0;
public static final int SERVICE_ERROR = 1;
}
@IntDef({AppEnums.CONNECTION_ERROR,AppEnums.SERVICE_ERROR})
public @interface ServiceErrors {
}
Run Code Online (Sandbox Code Playgroud)
复制自Yazazzello的评论如下:
IntDef - 适用于Android开发的新Enums.枚举通常需要的内存是静态常量的两倍多.你应该严格避免在Android上使用枚举.因此
IntDef
,如果设计用于替换枚举,则不能Enum
在IntDef
声明中使用
归档时间: |
|
查看次数: |
21532 次 |
最近记录: |