Kotlin 运算符重载基础
Kotlin 允许通过定义特定函数来重载标准运算符,这使得自定义类型能够像内置类型一样参与运算,极大地提升了代码的可读性和表达力。这种机制被称为'运算符重载'(Operator Overloading)。在 Kotlin 中,所有用于重载运算符的函数都必须使用 operator 关键字进行修饰。如果不加此关键字,编译器会报错或将其视为普通函数。
为什么需要运算符重载?
运算符重载是构建领域特定语言(DSL)的关键技术之一。它允许开发者编写出更接近自然语言的代码,例如数学公式、金融计算或图形变换逻辑。通过重载,我们可以让自定义对象支持直观的语法糖,减少样板代码。
重载算术运算符
二元算术运算符
要重载二元运算符(如 +, -, *, /),需要在类中定义对应的成员函数或使用扩展函数。例如,要实现加法运算,需定义 plus 函数。
data class Point(val x: Int, val y: Int) {
operator fun plus(other: Point): Point {
return Point(x + other.x, y + other.y)
}
}
使用方式:val p = p1 + p2 等价于 p1.plus(p2)。
除了成员函数,也可以定义为扩展函数,这常用于为第三方库的类添加功能而不修改其源码。例如,给 String 添加一个特殊的拼接逻辑。
可重载的二元算术运算符列表:
| 运算符 | 对应函数 |
|---|---|
a * b | times |
a / b | div |
a % b | mod |
a + b | plus |
a - b | minus |
与 Java 的互操作性:
从 Java 调用 Kotlin 的运算符函数时,只需像普通函数一样调用即可。当 Kotlin 调用 Java 方法时,如果 Java 方法的名称和参数符合 Kotlin 的约定,也可以使用运算符语法。Java 没有 关键字的概念,因此只要参数匹配即可。


