Non-static method '***' cannot be referenced from a static context

417 阅读1分钟

代码

// Java代码
MMKVUtils.decodeString("name");
// kotlin代码
object MMKVUtils {

    var mmkv: MMKV? = null

    init {
        mmkv = MMKV.defaultMMKV()
    }
    

    fun decodeString(key: String): String? {
        return mmkv?.decodeString(key, "")
    }

}

kotlin通过object就实现了单例模式 在kotlin和java代码中,它们的调用方式有点差别:

  • kotlin代码调用:MMKVUtils.decodeString("name");
  • java代码调用:MMKVUtils.INSTANCE.decodeString("name");

所以修改为

MMKVUtils.INSTANCE.decodeString("name");