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++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...
随机推荐
- CSDN-Java培训 - 看看这次会有多少人跟风...
2019年5月8日,闲来无事(最近答辩还没事......),存个档. 看看这一波风口,记录互联网+教育.
- display:flex; justify-content:space-between; 最后一行显示内容无法靠左显示
给父元素添加同每行展示列数一样(展示列表最多的)的子元素. 子元素设置样式: width:同子元素一样的width : height:0;
- 2011-04-21 运程连Oracle的方法
oracle无法远程连接重要原因,即使防火墙开放1521端口, 但是返回包可能是随机端口,所以仍有可能被防火墙阻止. 解决方法: 在注册表中增加一个字符串值如下.可解决 花费两天找到的方法 [HKEY ...
- H3C Comware的作用
- python不得不知的几个开源项目
1.Trac Trac拥有强大的bug管理 功能,并集成了Wiki 用于文档管理.它还支持代码管理工具Subversion ,这样可以在 bug管理和Wiki中方便地参考程序源代码. Trac有着比较 ...
- mybatis PageHelper分页插件 和 LRU算法缓存读取数据
分页: PageHelper的优点是,分页和Mapper.xml完全解耦.实现方式是以插件的形式,对Mybatis执行的流程进行了强化,添加了总数count和limit查询.属于物理分页. 一.首先注 ...
- jq实现鼠标悬停高亮当前图片
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- js(三) ajax异步局部刷新技术底层代码实现
ajax 异步 javaScript and xml 开发五步骤: 1. 创建对象 XMLHttpRequest(chrome,firefox) ie... jquery 2. 找到连接, http的 ...
- Intellij Idea更换主题
<h1 class="title">Intellij Idea更换主题</h1> <!-- 作者区域 --> <div class=&qu ...
- C# 输出文件夹下的所有文件
问题:如何输出给定文件夹目录下面的所有文件的名称? C#代码: using System; using System.IO; namespace MyTest { public class Progr ...