【发布时间】:2015-11-02 11:18:18
【问题描述】:
假设以下一对类:
class A(arg:String)
class B(argList:Vector[String]) extends A(argList.first)
我希望能够在为基类构造函数提供第一个元素之前检查 argList 是否为空。不幸的是,将该检查放在B 的默认构造函数中(例如通过require,如here 所示)为时已晚,因为需要首先调用基类的构造函数。
这可能是一个更一般的 OOP 问题,但解决方案可能是 Scala 特定的。
【问题讨论】:
-
在 java 中,在调用超级构造函数之前在构造函数中执行任何操作都会导致编译时错误。换句话说,超级构造函数 必须 是子构造函数中的第一条语句(如果省略,它会被隐式调用)。我认为 Scala 中没有解决方法。这是 Java 设计决定。
标签: scala inheritance constructor