Android:创建一个ENUM并为每个键插入一个值

时间:2018-09-18 22:41:55

标签: android enums associative-array

我想用数据库中的键创建一个枚举。然后,对于每个键,我想从同一数据库中设置值。

因为数据库非常长。

例如,数据库可以这样填充:

ABCD | 3
AAA  | Freddy
BB   | true

并且会有一个像这样的类:

ENUM MyValues { ABCD, AAA, BB, ... }

我可以得到一个特定的值:

MyValues.AAA //returns "Freddy"

(希望值可以是任何数据类型,但如果可能,则可以使用String。)

(我浏览了一些过时的文章。)

我将如何实现?

2 个答案:

答案 0 :(得分:0)

您不应在枚举中使用很多类型。但是,如果您愿意,可以尝试以下方法:

public enum MyValues {
    ABCD(Integer.class, 3),
    AA(String.class, "Freddy"),
    BB(Boolean.class, true);

    private Object value;
    private Class<?> clazz;

    private MyValues(Class clazz, Object value) {
        this.clazz = clazz;
        this.value = value;
    }

    public Object getMyValue() {
        return value;
    }

    public Class<?> getMyClass() {
        return this.clazz;
    }
}

无论如何,您必须将对象解析为正确的类型!

答案 1 :(得分:0)

您可以考虑使用@Liar答案。但这偏离了枚举的初衷。为了代码可维护性,您应该坚持一种枚举类型。只需使用这样的单一类型:

public enum MyValue {
  ABCD("3"),
  AA("Freddy"),
  BB("true");

  private String value;

  MyValue(String value) {
    this.value = value;  
  }

  public String getValue() {
    return value;
  }
}

您可以通过调用以下代码来获取价值:

ABCD.getValue();

请注意,因为枚举是一个类,所以您可以将枚举视为类。

创建数据类型类以表示表的一行时,需要使该类按原样描述列值。例如,当列是字符串时,应在类中使用字符串变量,而不是整数,双精度数或其他形式。