Я был просто googling, чтобы узнать, как создать класс case с частным конструктором. Ниже приведен правильный способ сделать это, как описано в
Как переопределить приложение в компаньоне класса case
object A {
def apply(s: String, i: Int): A =
new A(s.toUpperCase, i) {} //abstract class implementation intentionally empty
}
abstract case class A private[A] (s: String, i: Int) {
private def readResolve(): Object = //to ensure validation and possible singleton-ness, must override readResolve to use explicit companion object apply method
A.apply(s, i)
def copy(s: String = s, i: Int = i): A =
A.apply(s, i)
}
Ниже мое понимание:
Если мы объявим абстрактную тему класса, то реализация для метода copy и apply не будет сгенерирована компилятором.
Ниже приведен вопрос, с которым я борюсь: -
Почему требуется обеспечить реализацию readResolve?