[Kotlin] Singleton Serialization

이태훈·2021년 8월 16일
0

본 포스팅에서는 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


  1. https://docs.oracle.com/javase/7/docs/platform/serialization/spec/input.html#5903
  2. https://blog.stylingandroid.com/kotlin-serializable-objects/
profile
https://www.linkedin.com/in/%ED%83%9C%ED%9B%88-%EC%9D%B4-7b9563237

0개의 댓글