如何使用具有构造函数的抽象类扩展 Scala 中的对象,并且该对象的 apply 方法返回该对象作为抽象的子类型?
例如:
abstract class AbstractResource(amount:Int) {
val amount:Int
def getAmount = amount
}
case object Wood extends AbstractResource{
def apply(amount: Int) = {
// something that returns the subtype
}
}
我认为一个好的解决方案是:
abstract class AbstractResource {
val amount: Int = 0
def getAmount = amount
}
case object Wood extends AbstractResource {
def apply(quantity: Int) = {
new AbstractResource {
override val amount = quantity
}
}
}
但我的问题是我无法编辑 AbstractResource
最佳答案
我不知道为什么Wood
应该扩展AbstractResource
,但这有效:
class AbstractResource(val amount:Int) {
def getAmount = amount
}
case object Wood extends AbstractResource(0) {
def apply(amount: Int) = {
new AbstractResource(amount)
}
}
关于scala - 如何使用带构造函数的抽象类扩展 Scala 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18097753/