I have an enum:
public enum AppEnums {
SERVICE_ERROR,
CONNECTION_ERROR;
}
and I want to use it in an intDef of Android Annotation:
@IntDef({AppEnums.CONNECTION_ERROR, AppEnums.SERVICE_ERROR})
public @interface ServiceErrors {
}
error shows:
incompatible types found, required: 'long'
What I can do with this incompatibility?
I don't want to handle values of AppEnum parameters manually, Enum create values automatically ordinarily. AppEnums.CONNECTION_ERROR.ordinal()
return int value of enum parameter but don't work here.
The main idea of IntDef
annotation is to use set of int
constants like an enum
, but without enum
. In this case you have to declare all constants manually.
@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;
}
You can see detailed example here.