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

Kotlin自定义类中函数引用未解决问题求助

搞定Kotlin里的「unresolved reference」错误

看你描述的情况,刚接触Kotlin遇到这种问题太正常了!从你贴的代码片段来看,shout()函数里只写了pri...,结合报错信息,我给你梳理几个最可能的原因和解决办法:


1. 私有成员的访问范围踩坑了

你的Test类里有个private var test: Test? = null,Kotlin里的private是类级私有——意思是只有当前实例自己能访问这个变量,哪怕是同类型的其他实例都碰不到。

举个错误示例:

fun shout(otherTest: Test) {
    println(otherTest.test) // 这里必报unresolved reference!test是private的
}

解决办法:

  • 把test的可见性改成protected(子类能访问)或者internal(同模块内可见);
  • 用你已经写好的getBla()方法来获取,比如otherTest.getBla()。

2. 函数/变量拼写错了或者根本没定义

你贴的shout()函数只写了pri...,如果是你漏写了目标函数(比如想写print()却打错),或者想调用一个根本没在类里定义的私有函数,那肯定会报未解析引用。

比如你本来想写:

fun shout() {
    println("Hello Kotlin!")
}

结果手滑写成了pri...,这种情况就仔细核对拼写,确保要调用的成员确实存在。

3. 抽象类实例化的小误区

你的Test是抽象类,不能直接val t = Test()实例化,必须通过子类继承后创建实例:

class TestImpl : Test() {
    // 如果Test里有抽象方法,这里需要实现
}

// 正确调用方式
val myTest = TestImpl()
myTest.shout()

如果是直接实例化抽象类,编译器会先报错,但如果是子类实例化后调用shout()出错,还是回到前面的成员访问或拼写问题。


先把shout()函数的完整代码补全,再对照上面的点排查,应该很快就能解决这个问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:29:52