Хм, это странно. Выглядит как ошибка для меня.
Один из способов исправить это - присвоить Value значение по умолчанию для getType, а затем переопределить его только в KnownType. Вот так:
sealed trait Value {
def getType: Option[Class[_]] = None
}
case object UnknownValue extends Value
case class KnownType(typ: Class[_]) extends Value {
override def getType = Some(typ)
}
Но это выглядит подозрительно, как будто вы заново изобретаете Option. Я бы вообще пропустил тип Value и просто использовал бы прямые параметры.
Map(
0 -> Some(classOf[Object]),
1 -> None)
Если вам не нравится вводить Option [Class [_]] каждый раз, когда вы ожидаете одну из этих Карт, вы можете создать для нее псевдоним:
type Value = Option[Class[_]]