我的课:
class Manager (var name: String, var nationality: String) {
constructor(agent: String): this() {}
}
返回以下错误:
None of the following functions can be called with the arguments supplied.
<init>(String) defined in Manager
<init>(String, String) defined in Manager
知道为什么吗?
答案 0 :(得分:1)
您的类有一个带两个参数的主构造函数,然后定义一个带一个参数的辅助构造器。
现在,根据Kotlin documentation:
如果该类具有主构造函数,则每个辅助构造函数 需要直接或直接委派给主要构造函数 间接通过另一个辅助构造函数。
您正试图通过调用this()
来做到这一点,但是由于您没有零参数的构造函数(主要或次要),因此会导致编译错误。
例如,要解决此问题,可以从辅助构造函数调用主构造函数,如下所示:
class Manager (var name: String, var nationality: String) {
constructor(agent: String): this(agent, "") {}
}