Я пытаюсь сделать utils для выполнения сетевых операций в kotlin
. У меня есть код ниже, где основной конструктор принимает Command
и Context
.
Я не могу получить доступ к командной переменной в command.execute(JSONObject(jsonObj))
, получив ниже ошибки. Я не уверен, что вызывает проблему?
Неразрешенная ссылка: команда
class AsyncService(val command: Command, val context: Context) { companion object { fun doGet(request: String) { doAsync { val jsonObj = java.net.URL(request).readText() command.execute(JSONObject(jsonObj)) } } } }
Сопутствующий объект не является частью экземпляра класса. Вы не можете получить доступ к элементам из объекта-компаньона, так же как и в Java, вы не можете получить доступ к элементам из статического метода.
Вместо этого не используйте объект-компаньон:
class AsyncService(val command: Command, val context: Context) { fun doGet(request: String) { doAsync { val jsonObj = java.net.URL(request).readText() command.execute(JSONObject(jsonObj)) } } }
Вы должны передать аргументы непосредственно своей функции сопутствующего объекта:
class AsyncService { companion object { fun doGet(command: Command, context: Context, request: String) { doAsync { val jsonObj = java.net.URL(request).readText() command.execute(JSONObject(jsonObj)) } } } }