scala中Called constructor's definition must precede calling constructor's definition
时间: 2024-10-14 17:14:12 浏览: 17
在Scala语言中,"Called constructor's definition must precede calling constructor's definition" 这个错误信息意味着你在尝试调用构造函数之前,没有先提供其相应的定义。换句话说,如果你试图创建一个类的对象,那么在这个类里定义的所有构造函数(包括默认构造函数、有参构造函数等)都必须放在它被引用的地方之前。
举个例子:
```scala
class MyClass {
// 如果这里先调用了构造函数,如 `new MyClass()`,那么就会触发这个错误
println("Hello") // 这里的打印发生在类定义之前
def this() = { // 正确的做法是在类体内部提供构造函数定义
println("Constructor called")
}
}
```
正确的顺序应该是先定义构造函数,然后在其后的代码中调用:
```scala
class MyClass {
def this() = {
println("Constructor called")
}
println("Hello") // 这里可以正常工作,因为构造函数已经定义过了
}
```
阅读全文