앞쪽에서 case class는 class를 선언할 때 컴파일러에 몇 가지 부가기능을 추가하라는 명령어임을 공부하고 정리했었다. 그리고, 이 클래스는 패턴 매칭, 데이터의 모델링으로 사용되기도 했었다.
그러면 case class와 유사해보이는 case object는 무엇일까?
case object
는 serializable을 상속함으로써 파일 저장 및 통신에 유용하다.
거기에, 디폴트로 hasCode implementation이 존재한다.
Serializable
JSon storage를 위해 Scala를 Serializing하는 것으로, object를 string으로 변환하여 disk에 write하는 것을 serializable이라고 한다. Scala에서 class를 serializable하게 하려면 Serializable trait를 상속 받아야 한다.
case object 역시 object의 일종이지만, object보다 많은 attribute들을 가지고 있다. case object는 클래스와 object를 합한 것과 같다.