[Kotlin] Singleton Serialization
본 포스팅에서는 Kotlin의 object를 Serialization 하는 방법에 대해 알아보겠습니다.
Kotlin에서의 object는 Singleton을 사용하기 위해서 사용됩니다. 그리고, 이런 object를 serialization 할 상황이 생겨 해당 방법을 알아보았습니다.
Kotlin에서 Serialization을 적용시키기 위해서는 해당 클래스가 Serializable을 implements 하기만 하면 됩니다.
object Singleton : Serializable {
something...
}
하지만, 이렇게만 구현을 하게 되면 해당 object를 보낼 때 그 object가 recreate 되는 문제가 발생합니다.
그래서 해당 코드 작성자가 원하는 대로 작동하지 않게 됩니다.
이러한 문제를 해결하기 위해서는 다음 함수를 추가해주시기만 하면 끝입니다.
fun readResolve(): Any = Singleton
이 readResolve 함수는 Java에서부터 존재하던 Singleton Instance를 Serialize할 때 recreate되던 문제를 해결하기 위한 함수입니다.
readResolve 함수를 구현하게 되면, Deserialization 과정 중에서 stream 안의 객체가 반환할 객체를 지정할 수 있게 합니다. 그래서, readResolve에서 Singleton Instance를 반환하게 해주면 프로그램이 원하는대로 작동하게 될 것입니다.
References
- https://docs.oracle.com/javase/7/docs/platform/serialization/spec/input.html#5903
- https://blog.stylingandroid.com/kotlin-serializable-objects/
Author And Source
이 문제에 관하여([Kotlin] Singleton Serialization), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ams770/Kotlin-Singleton-Serialization저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)