gpt4 book ai didi

java - 在android中将参数化枚举转换为枚举注解

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:18:59 30 4
gpt4 key购买 nike

我有一个关于 andriod @IntDef 注释的问题。我知道在它的基本用法中,它应该取代 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;
}
}

这将如何被 Android 中的枚举注释取代?

在这种情况下,是否建议做类似的事情?我搜索过无处不在,但我还没有找到任何答案。

提前致谢!

最佳答案

我不认为你能找到任何东西,因为:

IntDef is a way of replacing an integer enum where there's a parameter that should only accept explicit int values.

您可以阅读更多相关信息 here .枚举注释用于简单类型,您也可以将它用于字符串 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;
}

}

并且您可以在代码中使用常量。但是如果使用枚举,你将进行类型检查(你将只能接受列出的值)和方法重载(每个枚举常量都可以有自己的方法实现)。如果你想使用更少的空间,这是你想避免使用枚举的唯一原因,我建议你这是不值得的。

关于java - 在android中将参数化枚举转换为枚举注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42512818/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com