Groovy重载操作符
重载一时爽,一直重载一直爽。
最近在读《Groovy in action》一本书重新复习了Groovy的一些语法特性,迷恋上这个重载操作符的功能,坚持爽的不要要的。分享一个Demo。
由于Groovy语法跟Java差别略大但又基本完全兼容Java语法,这个Demo依然以Java语法写出来,方便大家理解。
package com.FunTester.demo
import com.fun.frame.SourceCode
class demo1 extends SourceCode {
    public static void main(String[] args) {
       def s = "fun" * 3 << "fan"
        println s
        Demo demo = new Demo()
        Demo a = new Demo()
        Demo demo1 = demo + a
        Demo sssss = demo + 3
        Demo fsa = demo * 3
        Demo demo2 = demo / 9
        Demo demo3 = demo << a
        Demo demo4 = demo >> a
        Demo demo5 = demo++
        def i = 2 >>> 1
    }
    static class Demo {
        def plus(Demo demo) {
            output("加法对象")
            this
        }
        def plus(int s) {
            output("加法")
            this
        }
        def multiply(int a) {
            output("乘法")
            this
        }
        def div(int a) {
            output("除法")
            this
        }
        def leftShift(Demo demo) {
            output("<<操作")
            this
        }
        def rightShift(Demo demo) {
            output(">>操作")
            this
        }
        def next() {
            output("++操作")
            this
        }
    }
}
控制台输出

惊不惊喜意不意外!
下面结合性能测试框架的thread类写一个:
 RequestThreadTimes requestThreadTimes = new RequestThreadTimes(FanLibrary.getHttpGet(""), 100);
        List<RequestThreadTimes> threads = requestThreadTimes * 100;
        new Concurrent(threads).start()
乘法重载如下:
    /**
     * 乘法
     *
     * @param i
     * @return
     */
    public List<RequestThreadTimes> multiply(int i) {
        ArrayList<RequestThreadTimes> threads = new ArrayList<>(i);
        i.times {
            threads << this.clone();
        }
        threads
    }
哈,哈,哈!
- 还有一个大秘密:Groovy连操作符“.”也能重写。
- 郑重声明:文章首发于公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。
技术类文章精选
- java一行代码打印心形
- Linux性能监控软件netdata中文汉化版
- 性能测试框架第二版
- 如何在Linux命令行界面愉快进行性能测试
- 图解HTTP脑图
- 将swagger文档自动变成测试代码
- 五行代码构建静态博客
- 基于java的直线型接口测试框架初探
- Selenium 4.0 Alpha更新日志
- Selenium 4.0 Alpha更新实践
- 如何统一接口测试的功能、自动化和性能测试用例
非技术文章精选
- 为什么选择软件测试作为职业道路?
- 写给所有人的编程思维
- 成为自动化测试的7种技能
- 如何在DevOps引入自动化测试
- Web端自动化测试失败原因汇总
- 如何在DevOps引入自动化测试
- 测试人员常用借口
- 2019年浏览器市场份额排行榜
- API测试基础
- API自动化测试指南
- 未来的QA测试工程师
Groovy重载操作符的更多相关文章
- 《精通C#》索引器与重载操作符(11.1-11.2)
		1.索引器方法结构大致为<modifier><return type> this [argument list],它可以在接口中定义: 在为接口声明索引器的时候,记住声明只是表 ... 
- C++ 重载操作符与转换
		<C++ Primer 4th>读书笔记 重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号. Sales_item operator+(const Sales ... 
- 解释清楚c++的重载操作符【用自己的话,解释清楚】
		C++中对于内置的变量及标准库中常见的类定义类常见的操作符含义,对于自定义的类也可以通过关键字operate 重载操作符的含义. C++中支持重载的目的 诚然操作符的重载可以通过使用函数实现同样的功能 ... 
- 重载操作符 operator overloading 学习笔记
		重载操作符,只是另外一种调用函数的方法和表现方式,在某些情况它可以让代码更简单易读.注意不要过度使用重载操作符,除非它让你的类更简单,让你的代码更易读. 1语法 如下: 其中友元,关键字不是必须的,但 ... 
- [019]转--C++ operator关键字(重载操作符)
		原博客:http://www.cnblogs.com/speedmancs/archive/2011/06/09/2076873.html operator是C++的关键字,它和运算符一起使用,表示一 ... 
- VC6.0中重载操作符函数无法访问类的私有成员
		整理日: 2015年03月18日 在 C++ 中,操作符(运算符)可以被重载以改写其实际操作.同时我们可以定义一个函数为类的朋友函数(friend function)以便使得这个函数能够访问类的私有成 ... 
- C++高精度运算类bign (重载操作符)
		大数据操作,有例如以下问题: 计算:456789135612326542132123+14875231656511323132 456789135612326542132123*14875231656 ... 
- C++ operator关键字(重载操作符)(转)
		operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ... 
- C++中operator关键字(重载操作符)
		operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ... 
随机推荐
- ORACLE SQL数据类型转换
			ORACLE SQL数据类型转换 2019-04-07 22:35:53 广小白 阅读数 429更多 分类专栏: Oracle 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议, ... 
- php-max_execution_time
			有时候我们需要跑一个脚本,比如执行几十万个请求.如果你使用浏览器,请求服务器.这时就会出现执行中断,因为超时了.我们可以通过下面的方式: 修改php.ini配置文件 max_execution_tim ... 
- 微信接口开发报错invalid credential, access_token is invalid or not latest hint
			微信接口凭证access_token一定要全局管理 我们的查酒后台集成了微信公众平台的客服API接口,不用登录微信公众号的后台就可以直接给用户发送消息.最近,运营的同事反馈,通过微信查酒,后台无法直接 ... 
- form组件类 钩子函数验证
			# 全局钩子 def clean(self): pwd = self.cleaned_data.get("password") re_pwd = self.cleaned_data ... 
- WOE:信用评分卡模型中的变量离散化方法(生存分析)
			WOE:信用评分卡模型中的变量离散化方法 2016-03-21 生存分析 在做回归模型时,因临床需要常常需要对连续性的变量离散化,诸如年龄,分为老.中.青三组,一般的做法是ROC或者X-tile等等. ... 
- [转]Springboot和SpringMVC区别
			spring boot只是一个配置工具,整合工具,辅助工具. springmvc是框架,项目中实际运行的代码 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等 ... 
- Python--day40--threading模块的几个方法
			import time import threading #threading.get_ident() 查看当前进程号 def wahaha(n): time.sleep(0.5) print(n,t ... 
- 设置html各元素不可点击(持续更新)
			1.span <span id="nextStep" onclick="right">下一页</span> $("#nextS ... 
- Python--day33--当面试时候问到如何解决黏包问题?的回答。
- 2019-8-31-dotnet-Framework-源代码-·-Ink
			title author date CreateTime categories dotnet Framework 源代码 · Ink lindexi 2019-08-31 16:55:58 +0800 ... 
