【发布时间】:2011-09-30 22:27:59
【问题描述】:
我正在尝试弄清楚如何为 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 manifests,但我不清楚他们如何在这里提供帮助。同样,我不知道如何对伴随对象的 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
}
}
感谢您的任何想法!
【问题讨论】:
标签: scala