이넘 절약합니다 샤레트프레프랑스 수
궁금, 왜 내가 사용되는 일반적인 방법 '을' 샤레트프레펠릭스 저장하라는 이넘 '?' 현재 I& # 39 m ',' 다음 '를 사용하여 그슨 이넘 변환하십시오 문자열이어야 샤레트프레펠릭스' 저장합니다.
Gson gson = new Gson();
// country is an enum.
String json_country = gson.toJson(country);
sharedPreferences.edit().putString(COUNTRY, json_country);
저도 이게 궁금 좋은 방법은? 더 나은 방법이 있습니까?
34
5
단순한 문자열을 사용할 수 있는 방법을 사용하여 푸십시오 후 가치를 valueOf. 예를 들어보겠습니다.
다음은 볼 수 있는 샘플 코드를 어떻게 높여줍니까 작동하잖아. https://github.com/jiahaoliuliu/SavingEnumToSharedPreferences
이 같은 문제는 엔터프라이즈 자바 개발자 인쇄면 이넘 유지한 경우 데이터베이스에 대한. 이들은 기존 답변 에로남이네 약하고 리팩토링 친화적임 문제가 없습니다. # 39 에 왜 here& (대체 함께 맨 아래).
39 의 enum& 사용하는 방법 () '즉' toString () '와' valueOf can& 이넘 값을 # 39, t 바뀝니다. 예를 들어, I have a '와' 카 '와' 트럭 '이넘 페리클레티페 값뿐'. 만약 내가 문자열을 저장하는 " TRUCK"; '다음' 에서 '가치' 를 기본 설정으로 변경하십시오 페리클레티페스트루크 VehicleType.PICKUP_TRUCK 다음 버전의 내 앱이 더 이상 던질 수 있는 '와' 감지에서 저장됩니까 문자열이어야 이가라구멍렉세페시옹 valueOf () '은'.
39 의 값을 사용하여 value& 순서수 또는 저장된 값, 즉 t be 재정렬 이넘 can& # 39 경기 더 이상 상승했다. 이 시나리오는 예상치 못한 방식으로 동작할 수 있지만 더 앱을 실행할 수 있으므로 계속 시각이 잘 드러나 userdic. 추적할 것을 마지막으로 한 번 it& # 39 의 가능성이 높고 어려운 문제를 해결할 수 없다. 하지만 새로운 가치를 추가에는 어디든요 및끝 마찬가지입니다. 만약 내가 추가한 모터사이클 '새' a '자동차' 저장됩니까 값을 맨 위에 그 이전 버전에서 서수 (0) 로 다시 나올 것으로 보인다 '' 및 '해당 앱을 업데이트 후 오토바이, 트럭' (서수 1) a '자동차' 가 될 것 "이라고 말했다.
대체 내가 사용하는 것이 '마지막' 필드를 추가하기에서는 이넘 및 사용 등 그 가치가 있습니다.
'같은 항목을 사용하여 값을 저장하는 프레페렌세이퍼트슈타링 (,, " vehicle_type" 페리클레티페그제고데 ())' 와 '= 이 같은 항목을 사용하여 읽어들입니다 페리클레티페 페리클레티페드루쿠프비고데 (프레페렌스s.제스트링 (,, " vehicle_type" nulll)'.
그러나 이 외곽진입 单捞磐啊 제 생각이지만, 약간의 추가 코드를 it& # 39 의 가장 강력한 솔루션입니다.
이 정수 및 저장할 수 있는 간단한 int, 여바바 너회의 이넘 아소리아티 수 있습니다.
또한 동일한 방식으로 할 수 있는 '에누마토린트' (두 번째 답) - https://stackoverflow.com/questions/5878952/cast-int-to-enum-in-java
위의 모든 옵션 등을 고려할 때 나는 다른 솔루션 제공 문제를 활용키로 했다.
그들에 대한 일련의 값뿐만 데릭쉐퍼드와 전용 논리 없이. 이 경우 '와' '같은 툴을 사용할 수 있습니다' @IntDef @StringDef 사용하는 대신 '이넘'.
이 솔루션은 리팩터링 안전한 측면에서 주문하십시오 com/go/4e6b330a_kr 이름과 변수. 유일한 심아이엔큐 - 실제 값을 변경해서는 안 됩니다. 그러나 기본 리팩토링 도구를 won& # 39, t) 의 경우, 그대에게 변경하십시오 바꾸기 쉽지 않은 만들 수 있기 때문에 그냥 자동으로 (@IntDef '와' 에서 '관점' 이 @StringDef 것보다 낫다).
Avamar 은 [공식 문서] [1]
[1]: https://developer.android.com/reference/android/support/annotation/IntDef.html 공식 doc" ";
39 에 유용한 유틸리티인 here& 클래스 I 작성했습니까 엔드입니다. # 39 에 대한 일반화 i-프로파일이나 it& 매우 광범위한 홍보하십시오.