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

Kotlin中Val cannot be reassigned错误:如何修改Polyline对象?

解决Kotlin「Val cannot be reassigned」错误(针对polyLine.outlinePaint)

你把polyLine改成var还报错,核心原因不是polyLine变量不可变,而是**polyLine的outlinePaint成员本身是val类型,不能直接重新赋值**。下面分两种场景给出解决方案:

场景1:只需修改Paint的属性(无需替换整个outlinePaint)

如果outlinePaint的类型是可变对象(比如Android的Paint类),直接修改它的内部属性即可,不用重新赋值整个outlinePaint:

// 示例:修改线条颜色、宽度等属性
polyLine.outlinePaint.apply {
    color = android.graphics.Color.RED
    strokeWidth = 2f
    style = android.graphics.Paint.Style.STROKE
}

场景2:必须替换整个outlinePaint对象

如果需要用全新的Paint对象替换outlinePaint,分两种情况处理:

情况A:Polyline是数据类

Kotlin数据类自带copy()方法,可以生成保留原有属性、仅替换指定字段的新对象,再赋值给var类型的polyLine:

// 创建新的Paint对象并配置属性
val newOutlinePaint = android.graphics.Paint().apply {
    color = android.graphics.Color.BLUE
    strokeWidth = 3f
}
// 生成新的Polyline对象替换原变量
polyLine = polyLine.copy(outlinePaint = newOutlinePaint)

情况B:Polyline不是数据类

查看Polyline类的文档或源码,确认是否提供了修改outlinePaint的方法(比如setOutlinePaint());如果没有,就通过构造方法创建新的Polyline对象,传入原有属性和新的outlinePaint:

val newOutlinePaint = android.graphics.Paint().apply { /* 配置属性 */ }
// 假设Polyline的构造方法接收原有属性和outlinePaint
polyLine = Polyline(polyLine.points, newOutlinePaint, polyLine.otherProperty)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:10:30