Я пытаюсь выяснить, как вызвать конструктор для абстрактного типа Scala:
class Journey(val length: Int)
class PlaneJourney(length: Int) extends Journey(length)
class BoatJourney(length: Int) extends Journey(length)
class Port[J <: Journey] {
def startJourney: J = {
new J(23) // error: class type required but J found
}
}
Это вообще возможно? Я знаком с манифестами Scala , но мне не ясно, как они могли бы здесь помочь. Также я не могу понять, как сделать то же самое с конструктором apply () объекта-компаньона:
object Journey { def apply() = new Journey(0) }
object PlaneJourney { def apply() = new PlaneJourney(0) }
object BoatJourney { def apply() = new BoatJourney(0) }
class Port[J <: Journey] {
def startJourney: J = {
J() // error: not found: value J
}
}
Любые мысли с благодарностью приняты!