如何在Koltin中访问静态伴随对象中的实例变量

时间:2017-06-05 09:52:20

标签: kotlin

我正在尝试使用utils来执行kotlin中的网络操作。我有以下代码,其中主要构造函数正在使用CommandContext

我无法访问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))
            }
        }
    }
}

2 个答案:

答案 0 :(得分:6)

伴侣对象不是类实例的一部分。 您无法从协同对象访问成员,就像在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))
        }
    }
}

答案 1 :(得分:3)

您应该将参数直接传递给您的伴侣对象函数:

class AsyncService {

    companion object {
        fun doGet(command: Command, context: Context, request: String) {
            doAsync {
                val jsonObj = java.net.URL(request).readText()
                command.execute(JSONObject(jsonObj))
            }
        }
    }
}