프로그래밍 놀이터/안드로이드, Java
[java] enum 의 serialize 에 대한 이야기
돼지왕 왕돼지
2018. 3. 13. 08:30
반응형
-
enum 은 기본적으로 serializable 하다.
-
enum 의 serialization 은 다른 serialization 과 조금 다르다.
enum 의 serialize 결과는 constant 의 이름뿐이다.
enum serialize 시 ObjectOutputStream 에서는 'name' 함수의 return 값을 사용하고,
enum 의 deserialize 시 ObjectInputStream 에서 constant name 을 읽어서 'valueOf' 함수를 이용해 enum constant 를 얻는다.
따라서 enum 이 변경 가능한 private field 를 가지고 있다면.. 변경된 값이 써지거나 복구되지 않는다.
-
enum 의 serialization 은 customize 될 수 없다.
serialize 관련된 다음 함수들은 serialize 과정에서 무시된다.
writeObject, readObject, readObjectNoData, writeReplace, readResolve
-
enum 의 serialVersionUID 는 0L 로 고정이다.
-
참고 링크 : https://docs.oracle.com/javase/1.5.0/docs/guide/serialization/spec/serial-arch.html#enum
반응형