본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[java] enum 의 serialize 에 대한 이야기

by 돼지왕 왕돼지 2018. 3. 13.
반응형

 

class reference, constant, deserialize, enum, enum class, enum singleton, Java, name serialize, private field, Runtime, Serializable, Serialize, [java] enum 의 serialize 에 대한 이야기, 동일 값 참조, 변경 가능한 값, 변경된 값 복구

-

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

 

반응형

댓글