错误:使用提供的参数无法调用以下任何函数

时间:2019-01-26 08:12:51

标签: kotlin

我的课:

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

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

您的类有一个带两个参数的主构造函数,然后定义一个带一个参数的辅助构造器。

现在,根据Kotlin documentation

  

如果该类具有主构造函数,则每个辅助构造函数   需要直接或直接委派给主要构造函数   间接通过另一个辅助构造函数。

您正试图通过调用this()来做到这一点,但是由于您没有零参数的构造函数(主要或次要),因此会导致编译错误。

例如,要解决此问题,可以从辅助构造函数调用主构造函数,如下所示:

class Manager (var name: String, var nationality: String) {
    constructor(agent: String): this(agent, "") {}
}