2013-09-26 17 views
9

Sanırım yaygın olduğunu düşündüğüm bir durum var. Ben attrs.xml tanımlanan özel bir özellik varAndroid'de güvenli enum özel öznitelikleri

public enum Flavour { CHOCOLATE, STRAWBERRY } 

:

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

Ama bu gerçekten kırılgan hissediyor Ben bir Java enum var. Bu, öznitelikten enum'a doğru şekilde el ile eşleştirmeye dayanıyor.

birisi enum Tat sonuna "sardalya" eklerse o zaman tabii ki otomatik nitelik tanımına ilave edilmeyecektir. Bu yeterince adil. Birisi enum ortasında "sardalya" eklerse

Ama daha da kötüsü, bu "çilek" kullanmak xml düzenleri kıracak.

kişi bu nasıl üstesinden gelirsiniz? Dize (ve Flavour.valueOf() kullanarak) kullanmayı düşündüm, ama orada daha temiz bir çözüm olabileceğini umuyordum.

cevap

-3

Flavor enum'u güncel tuttuğunuz ve lezzet özniteliğiyle uyumlu olduğu sürece, bu iyi olmalıdır, ancak sipariş hakkında endişelenmek istemiyorsanız, endeksleri kullanmayın. Bunun yerine, düşündüğünüz gibi Strings ile gidin.

public enum Flavor { 
    CHOCOLATE, STRAWBERRY 

    public static Flavor get(String s) { 
    s = s.toLowerCase(); 
    if(s.equals("chocolate")) { 
     return CHOCOLATE; 
    } else { 
     return STRAWBERRY; 
    } 
    } 
} 
+0

Evet, bu yaklaşımdaki olası bir çalışma olarak benim yaklaşımımdan bahsetmiştim, ancak ilk etapta özel bir özellik kullanmanın tüm avantajlarını veriyor. Uygulamanızla, birisi değeri "choclate" olarak ayarlarsa, o zaman esrarengiz bir şekilde çalışma zamanında STRAWBERRY olarak ayarlanır. Başka bir uygulama benzersiz bir değer üzerinde bir istisna atabilir, ancak bu bir çalışma zamanı denetimi özel öznitelikler size derleme zamanı denetimi verir. – Martin

İlgili konular