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

Kotlin中能否用接口作构造参数?遇未解析引用triangleB错误

问题原因及修复方案

报错原因

在Kotlin中,构造函数的参数如果没有用val或var修饰,它仅属于构造函数的局部作用域,类的其他成员(比如side的getter方法)无法直接访问这个参数。你写的TriangleBAdapter构造函数里的triangleB就是这种情况,所以在get()方法里访问this.triangleB时会提示“Unresolved reference”。

另外补充:原代码里this.triangleB.side也会报错,因为TriangleB接口定义的是side1、side2、side3,并没有side属性,后续需要根据实际需求替换为对应的边。

修复方法

有两种常见的修复方式:

方式一:给构造参数添加val或var修饰

直接让构造参数成为类的成员属性,类内部就能通过this.triangleB访问:

class TriangleBAdapter(val triangleB: TriangleB) : TriangleA {
    override val side: Double
        get() = this.triangleB.side1

    override val corner1: Double
        get() = TODO("Not yet implemented")

    override val corner2: Double
        get() = TODO("Not yet implemented")
}

方式二:手动定义私有成员变量并赋值

如果不想把构造参数暴露为类的公共属性,可以定义私有成员变量,在构造函数中赋值:

class TriangleBAdapter(triangleB: TriangleB) : TriangleA {
    private val triangleBRef = triangleB

    override val side: Double
        get() = triangleBRef.side1

    override val corner1: Double
        get() = TODO("Not yet implemented")

    override val corner2: Double
        get() = TODO("Not yet implemented")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:36:29