欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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}")
    }
}