Ошибка: ни одна из следующих функций не может быть вызвана с предоставленными аргументами - PullRequest
0 голосов
/ 26 января 2019

Мой класс:

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 голосов
/ 26 января 2019

Ваш класс имеет первичный конструктор, который принимает два аргумента, а затем вы определяете вторичный конструктор, который принимает один аргумент.

Теперь, согласно документации Kotlin :

Если у класса есть первичный конструктор, каждый вторичный конструктор должен делегировать первичному конструктору, прямо или косвенно, через другой вторичный конструктор (ы).

Вы пытаетесьсделать это, вызвав this(), но поскольку у вас нет конструктора с нулевым аргументом (первичного или вторичного), это приводит к ошибке компиляции.

Чтобы исправить, например, вы можете вызвать основнойконструктор из вашего вторичного конструктора следующим образом:

class Manager (var name: String, var nationality: String) {
    constructor(agent: String): this(agent, "") {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...