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

Kotlin中private lateinit变量声明报错:Property getter or setter expected如何解决?

修复Kotlin中lateinit变量定义的「Property getter or setter expected」错误

这个错误其实是个很容易疏忽的语法问题——你在定义lateinit变量时,漏写了变量名和类型之间的冒号:。Kotlin的变量声明规则要求必须用冒号分隔变量名与它的类型,编译器没法识别你写的private lateinit var mCustomAdapter CustomAdapter这种格式,所以才抛出了「Property getter or setter expected」的报错。

修复后的变量定义

只需要在变量名和类型之间补上冒号即可:

private lateinit var mCustomAdapter: CustomAdapter

完整代码示例

结合你的代码片段,修复后的完整写法如下:

class UIMain : AppCompatActivity() {
    // 修复后的私有lateinit变量声明
    private lateinit var mCustomAdapter: CustomAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.layout_main)
        
        // 初始化RecyclerView的LayoutManager(示例用LinearLayoutManager)
        mRecyclerView.layoutManager = LinearLayoutManager(this)
        // 延迟赋值自定义适配器
        mCustomAdapter = CustomAdapter(allList)
        // 给RecyclerView设置适配器
        mRecyclerView.adapter = mCustomAdapter
    }
}

额外注意事项

  • 使用lateinit时,一定要确保变量在第一次使用前完成初始化,否则会抛出UninitializedPropertyAccessException异常。
  • 如果不确定变量是否一定会被初始化,也可以考虑用可空类型替代:private var mCustomAdapter: CustomAdapter? = null,但使用时需要处理空安全(比如用?.或者!!);而lateinit则不需要每次都做空值判断,更适合确定会提前初始化的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:27:32