9
我有一種我認爲很常見的情況。我有一個Java枚舉:Android中的安全枚舉自定義屬性
public enum Flavour { CHOCOLATE, STRAWBERRY }
我在attrs.xml定義自定義屬性:
<attr name="flavour">
<enum name="chocolate" value="0" />
<enum name="strawberry" value="1" />
</attr>
但這種感覺真的很脆弱。它依靠我手動從屬性映射到枚舉正確。
如果有人在「enum Flavor」的末尾添加了「SARDINE」,那麼它顯然不會自動添加到屬性定義中。這很公平。
但更糟糕的是,如果有人在枚舉中添加了「SARDINE」,它將打破使用「草莓」的xml佈局。
人們如何克服這一點?我考慮過使用字符串(並使用Flavour.valueOf()
),但我希望可能有一個更清潔的解決方案。
嗯是的,我在我的問題中提到過這種方法作爲可能的解決方法,但它放棄了首先使用自定義屬性的所有優點。 隨着你的實現,如果有人將值設置爲「choclate」,那麼它將在運行時神祕地設置爲STRAWBERRY。 另一個實現可能會針對不匹配的值拋出異常,但這是運行時檢查,而自定義屬性會爲您提供編譯時檢查。 – Martin