我认为这种情况很常见。我有一个Java枚举:
public enum Flavour { CHOCOLATE, STRAWBERRY }
我在attrs.xml中定义了一个自定义属性:
<attr name="flavour">
<enum name="chocolate" value="0" />
<enum name="strawberry" value="1" />
</attr>
但这感觉非常脆弱。它依赖于我正确地从属性手动映射到枚举。
如果有人在枚举Flavor的末尾添加“SARDINE”,那么它显然不会自动添加到属性定义中。这很公平。
但更糟糕的是,如果有人在枚举的中间添加“SARDINE”,它将破坏使用“草莓”的xml布局。
人们如何克服这一点?我考虑过使用字符串(并使用Flavour.valueOf()
),但我希望有更清晰的解决方案。
答案 0 :(得分:-3)
只要你保持Flavor枚举最新并与flavor属性同步,它应该没问题,但如果你真的不想担心订单,那么不要使用索引。而是按照你的考虑去使用Strings。
public enum Flavor {
CHOCOLATE, STRAWBERRY
public static Flavor get(String s) {
s = s.toLowerCase();
if(s.equals("chocolate")) {
return CHOCOLATE;
} else {
return STRAWBERRY;
}
}
}