2013-09-26 2 views
9

나는 꽤 일반적인 것으로 추정되는 상황이있다. 나는 attrs.xml이에 정의 된 사용자 지정 특성이안드로이드에서 안전한 enum 커스텀 속성

public enum Flavour { CHOCOLATE, STRAWBERRY } 

:

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

을하지만이 정말 깨지기 쉬운 느낌이 나는 자바 열거 있습니다. 그것은 나를 수동으로 특성에서 열거 형으로 올바르게 매핑하는 의존합니다.

누군가가 "SARDINE"을 열거 Flavor의 끝에 추가하면 분명히 자동으로 속성 정의에 추가되지 않습니다. 그 정도면 충분합니다.

그러나 열악한 상황에서 누군가가 "SARDINE"을 추가하면 "strawberry"를 사용하는 xml 레이아웃이 손상됩니다.

사람들은 어떻게 이것을 극복합니까? 나는 문자열을 사용하고 (그리고 Flavour.valueOf()을 사용하여) 고려했지만, 거기에 깨끗한 해결책이있을 수 있기를 바랬다.

답변

-3

Flavor 열거 형을 최신으로 유지하고 맛 속성과 동기화하는 한 괜찮습니다.하지만 순서에 대해 걱정할 필요가 없다면 색인을 사용하지 마십시오. 대신 당신이 생각한 것처럼 문자열로 이동하십시오.

+0

글쎄, 나는 가능한 해결책으로 내 질문에 그 방법을 언급했지만 그것은 처음부터 사용자 정의 속성을 사용하는 모든 이점을 포기합니다. 구현시 누군가가 값을 "choclate"로 설정하면 런타임에 신비하게 STRAWBERRY로 설정됩니다. 다른 구현에서는 비교할 수없는 값에 예외가 발생할 수 있지만 이는 런타임 검사이며 사용자 지정 특성은 컴파일 타임 검사를 제공합니다. – Martin

관련 문제