10

我有一个我认为很常见的情况。我有一个 Java 枚举:

public enum Flavour { CHOCOLATE, STRAWBERRY }

我在 attrs.xml 中定义了一个自定义属性:

<attr name="flavour">
    <enum name="chocolate" value="0" />
    <enum name="strawberry" value="1" />
</attr>

但这感觉真的很脆弱。它依赖于我手动正确地从属性映射到枚举。

如果有人将“SARDINE”添加到枚举 Flavor 的末尾,那么它显然不会自动添加到属性定义中。这很公平。

但更糟糕的是,如果有人在枚举中间添加“SARDINE”,则会破坏使用“草莓”的 xml 布局。

人们如何克服这一点?我考虑过使用字符串(和使用Flavour.valueOf()),但我希望那里可能有一个更清洁的解决方案。

4

1 回答 1

-3

只要您使 Flavor 枚举保持最新并与 flavor 属性同步,应该没问题,但如果您真的不想担心顺序,请不要使用索引。而是按照您的考虑使用字符串。

public enum Flavor {
  CHOCOLATE, STRAWBERRY

  public static Flavor get(String s) {
     s = s.toLowerCase();
     if(s.equals("chocolate")) {
       return CHOCOLATE;
     } else {
       return STRAWBERRY;
     }
  }
}
于 2013-12-10T14:17:05.070 回答