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

Kotlin中能否重写/修改String、Number等类型的内置方法与操作符?

Kotlin中修改String/Number内置操作符的问题解答

1. 能否重载String、Number的操作符?

可以通过操作符重载新增特定场景下的逻辑,但无法直接替换它们的内置操作符行为。比如你可以给String新增和自定义类型的plus操作:

class MyData(val value: Int)

operator fun String.plus(data: MyData): String {
    return "$this-${data.value}"
}

fun main() {
    println("Hello" + MyData(123)) // 输出 Hello-123
}

但如果是原有类型的组合(比如String加String),你的扩展函数不会生效——因为内置方法的优先级远高于扩展函数。

2. 有没有办法修改内置的plus/+等方法?

没有直接可行的办法。Kotlin的核心类(String、Int、Long这类Number子类)本身是final的,无法被继承;同时内置成员方法的优先级高于扩展函数,你没法通过扩展覆盖原有逻辑。这些方法的行为是语言层面固定的,无法修改。

3. Kotlin没有原始类型都是对象,是否意味着这些类型可被修改?

Kotlin确实没有Java式的原始类型,所有数值类型都是包装类实例,但这和“修改内置方法”是两个概念。这些核心类的设计就是不可变且不可继承的,目的是保证语言的稳定性和安全性。你可以给它们加扩展函数,但完全没法改变原有内置方法的行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:48:07