groovy运算符重载对应方法

文章目录
一、运算符重载
二、运算符重载对应方法

一、运算符重载

Groovy 类可以进行运算符重载 , 任何一个类都可以使用预定义的 运算符 进行运算 , 如 " + - * / " 加减乘除 操作 , Groovy 中支持 26 2626 种运算符的重载操作 ;

如 : 定义一个 Age 类 , 该类代表年龄 , 为该类进行 " + " 运算符重载 ;
要实现 " + " 运算符重载 , 只需要在该类中定义 plus 方法即可 , 既可以支持 与 Number 数字相加 , 又可以支持与 其它 Age 对象相加 ; 如果传入其它类型的参数 , 直接抛出异常 ;

  • class Age {
        def ageNumber
    
        def plus(age) {
            // 传入的参数是 数字类型 , 如 int , float 等类型
            if (age instanceof Number) {
                // 处理 Age 对象与数字相加的情况
                new Age(ageNumber: ageNumber + age)
            } else if (age instanceof Age) {
                // 处理 Age 对象与 Age 对象相加的情况
                new Age(ageNumber: ageNumber + age.ageNumber)
            } else {
                // 如果 + 符号后面既不是数字 , 又不是 Age 对象
                // 直接抛出异常
                throw new MissingMethodException("plus", Age.class)
            }
        }
    
        @Override
        String toString() {
            return "ageNumber : " + ageNumber
        }
    }
    

二、运算符重载对应方法

运算符对应的重载方法
a + ba.plus(b)
a – ba.minus(b)
a * ba.multiply(b)
a ** ba.power(b)
a / ba.div(b)
a % ba.mod(b)
ab
a & ba.and(b)
a ^ ba.xor(b)
a++ or ++aa.next()
a– or –aa.previous()
a[b]a.getAt(b)
a[b] = ca.putAt(b, c)
a << ba.leftShift(b)
a >> ba.rightShift(b)
switch(a) { case(b) : }b.isCase(a)
~aa.bitwiseNegate()
-aa.negative()
+aa.positive()
a == ba a.equals(b) or a.compareTo(b) == 0 **
a != ba ! a.equals(b)
a <=> ba a.compareTo(b)
a > ba .compareTo(b) > 0
a >= ba a.compareTo(b) >= 0
a < ba a.compareTo(b) < 0
a <= ba a.compareTo(b) <= 0

原文链接:https://blog.csdn.net/shulianghan/article/details/122294399

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值