【问题标题】:Android: Create an ENUM and insert a value for each keyAndroid:创建一个 ENUM 并为每个键插入一个值
【发布时间】:2018-09-18 22:41:54
【问题描述】:

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

因为数据库非常长。

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

ABCD | 3
AAA  | Freddy
BB   | true

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

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

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

MyValues.AAA //returns "Freddy"

(希望值可以是任何数据类型,但如果不可能,字符串也可以。)

(我浏览了一些太旧的文章。)

我将如何实现这一目标?

【问题讨论】:

    标签: android enums associative-array


    【解决方案1】:

    您不应该在枚举中使用多种类型。但如果你愿意,你可以试试这个:

    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;
        }
    }
    

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

    【讨论】:

    • 这将允许任何类型 - 但我想这不是最好的,也许应该坚持使用字符串。再次不要只关注那些键!大约有 500 个 - 我不想每个都插入。因此,我想按需创建一个枚举。这个可以吗?
    【解决方案2】:

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

    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();
    

    请注意,您可以将 Enum 视为一个类,因为 Enum 是一个类

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

    【讨论】:

    • 不要被那些钥匙所困扰!大约有 500 个 - 我不想每个都插入。因此,我想按需创建一个枚举。这个可以吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2016-10-09
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多