Я создал код, который фактически использует наследование
Любой другой альтернативный способ сделать это, если я хочу использовать для этого композицию
case class Test(message:msg)
abstract class MsgValuetype(value: myString) {
override def toString = s"${value.value}"
}
case class msg(id:String) extends MsgValuetype(myString(id))
case class myString(value: String){
override def toString = s"$value"
}
Ниже приведен мой последний вызов для проверки вышеизложенного. Я хочу, чтобы передавалась только строка. Обратите внимание, что фактические классы более сложны в моем случае использования. Я только что попытался указать простой способ получить альтернативное решение.
Test(msg("123"))
Обновление 1
Если я попытаюсь сделать MsgValuetype частью класса case msg вместо его расширения.
case class Test(message:msg)
case class MsgValuetype(value: myString) {
override def toString = s"${value.value}"
}
case class msg(id:String,myType:MsgValuetype)
case class myString(value: String){
override def toString = s"$value"
}
Мне нужно сделать ниже вызов для инициализации
Test(msg("123",MsgValuetype(myString("123"))))
Я только хочу позвонить, как
Test(msg("123"))
Test
, передав строку? В этом случае наиболее разумным решением будет использование перегруженного методаapply
в объекте-компаньоне. - person puhlen   schedule 11.08.2017