Groovy 类的更多信息
程序员文章站
2022-07-12 15:31:05
...
操作符重载
在Groovy中所有事物都是一个对象,如:整数字面值123实际上就是类Integer的一个实例;此对象实例可用于比如:123+456这种,类似于传统运算符一样;而实际上这个表达式是调用 123.plus(456)的简写形式;
对于预定义的操作符,Groovy支持操作符重载,每个操作符被映射到一个特定的方法名,如上: +
操作符被映射到plus
方法;
原理:每个操作符都会映射到一个标准的方法;
我们也可在自己的类中实现这些方法,可以利用重载的优势来编写自己的Java或者groovy对象;
groovy中操作符所映射到的方法(举例):
操作符 | 方法 | 说明 |
---|---|---|
a+b | a.plus(b) | 加法 |
a-b | a.minus(b) | 减法 |
a*b | a.multiply(b) | 乘法 |
a/b | a.divide(b) | 除法 |
操作符重载的示例代码
class Vector {
private def values = []
Vector(v) {
this.values = v
}
def plus(vec) {
def res = []
def size = this.values.size()
def vecSize = vec.values.size()
if (size == vecSize) {
for (index in 0..<size) {
res << (values[index] + vec.values[index])
}
}
return res
}
static void main(args) {
def vec1 = new Vector([1, 2, 3, 4])
def vec2 = new Vector([10, 11, 12, 13])
println("vec1 + vec2 = ${vec1 + vec2}")
}
}