the*_*yro 5 java enums android annotations android-support-library
我对andriod @IntDefAnnotation 有疑问.我知道在它的基本用法中,它应该取代它enum.但是,如果我有一个带有多个硬连线值的参数化枚举,例如
public enum MyEnum {
YES(true, 1),
NO(false, 0);
private boolean boolState;
private boolean intState;
MyEnum(boolean boolState, int intState) {
this.boolState = boolState;
this.intState = intState;
}
public boolean getBoolState() {
return boolState;
}
public int getIntState() {
return intState;
}
}
Run Code Online (Sandbox Code Playgroud)
如何用Android中的Enumerated Annotation取代它?
在这种情况下,甚至暗示做类似的事情吗?我到处搜索,但我没有找到任何答案.
先感谢您!
我不认为你能找到任何东西,因为:
IntDef是一种替换整数枚举的方法,其中有一个参数只应接受显式的int值.
你可以在这里阅读更多相关信息.枚举注释适用于简单类型,您也可以将它用于字符串StringDef.需要其功能时使用枚举.不要严格避免它.对于你的情况,我认为创建类而不是枚举将如下所示:
public class MyEnum {
public static final MyEnum YES = new MyEnum(true, 1);
public static final MyEnum NO = new MyEnum(false, 0);
private boolean boolState;
private int intState;
MyEnum(boolean boolState, int intState) {
this.boolState = boolState;
this.intState = intState;
}
public boolean getBoolState() {
return boolState;
}
public int getIntState() {
return intState;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyEnum myEnum = (MyEnum) o;
return boolState == myEnum.boolState && intState == myEnum.intState;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以在你的代码中使用常量.但是如果使用枚举,你将进行类型检查(你将只能接受列出的值)和方法重载(每个枚举常量可以有自己的方法实现).如果你想使用更少的空间,这是你想避免使用枚举的唯一原因,我会建议你,这是不值得的.
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |