一尘不染

枚举和android注释intDef

java

我有一个枚举:

public enum AppEnums {
    SERVICE_ERROR,
    CONNECTION_ERROR;
}

我想在Android注释的indDef中使用它:

@IntDef({AppEnums.CONNECTION_ERROR, AppEnums.SERVICE_ERROR})
public @interface ServiceErrors {
}

错误显示:

找到不兼容的类型,必需:“ long”

这种不兼容该怎么办?

我不想手动处理AppEnum参数的值,Enum通常会自动创建值。AppEnums.CONNECTION_ERROR.ordinal()返回enum参数的int值,但在这里不起作用。


阅读 234

收藏
2020-12-03

共1个答案

一尘不染

IntDef注释的主要思想是使用int常量集,例如an 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;
}

您可以在此处查看详细的示例。

2020-12-03