You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Parse.com后台保存对象时,无法重写done()函数报错咨询

解决Kotlin中Parse saveInBackground 回调的 override 错误

这个报错是因为你把Java里匿名内部类的写法直接套到Kotlin里啦!在Kotlin中,你不需要(也不能)给局部函数加override修饰符,得用Kotlin特有的方式实现回调接口。

方法1:用对象表达式(和Java匿名类写法最接近)

对应你Java里的写法,Kotlin里可以用对象表达式来实现SaveCallback接口,这样就能正确重写done方法:

myObject.saveInBackground(object : SaveCallback {
    override fun done(e: ParseException?) {
        if (e == null) {
            myObjectSavedSuccessfully()
        } else {
            myObjectSaveDidNotSucceed()
        }
    }
})

这里的object : SaveCallback就相当于Java里的new SaveCallback(),然后在这个对象内部重写done方法,这时候override是合法的,因为它是接口方法的重写。

方法2:用Lambda简化(更简洁的Kotlin写法)

因为SaveCallback是只有一个抽象方法的函数式接口,Kotlin支持直接用Lambda表达式来简化代码,不用显式写override:

myObject.saveInBackground { e ->
    if (e == null) {
        myObjectSavedSuccessfully()
    } else {
        myObjectSaveDidNotSucceed()
    }
}

这种写法更符合Kotlin的风格,编译器会自动把Lambda转换成SaveCallback的实现。

整合到你的StarterApplication类里的示例

如果是在onCreate里调用的话,完整代码大概是这样:

class StarterApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        // 初始化Parse(记得替换成你的配置)
        Parse.initialize(Parse.Configuration.Builder(this)
            .applicationId("YOUR_APP_ID")
            .server("YOUR_SERVER_URL")
            .build())

        // 示例:创建并保存Parse对象
        val myObject = ParseObject("TestObject")
        myObject.put("foo", "bar")
        
        // 用Lambda方式的回调
        myObject.saveInBackground { e ->
            if (e == null) {
                myObjectSavedSuccessfully()
            } else {
                myObjectSaveDidNotSucceed()
            }
        }
    }

    private fun myObjectSavedSuccessfully() {
        // 保存成功后的逻辑
    }

    private fun myObjectSaveDidNotSucceed() {
        // 保存失败后的逻辑
    }
}

总结一下:你之前错误地把override fun done()当成了局部函数来写,而正确的做法是通过对象表达式或者Lambda来实现回调接口,这样override(如果用对象表达式的话)就会被识别为接口方法的重写,不会再报错啦!

内容的提问来源于stack exchange,提问作者Jurgiele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:34:36