重载一时爽,一直重载一直爽。

最近在读《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”,禁止第三方(腾讯云除外)转载、发表。

技术类文章精选

非技术文章精选

Groovy重载操作符的更多相关文章

  1. 《精通C#》索引器与重载操作符(11.1-11.2)

    1.索引器方法结构大致为<modifier><return type> this [argument list],它可以在接口中定义: 在为接口声明索引器的时候,记住声明只是表 ...

  2. C++ 重载操作符与转换

    <C++ Primer 4th>读书笔记 重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号. Sales_item operator+(const Sales ...

  3. 解释清楚c++的重载操作符【用自己的话,解释清楚】

    C++中对于内置的变量及标准库中常见的类定义类常见的操作符含义,对于自定义的类也可以通过关键字operate 重载操作符的含义. C++中支持重载的目的 诚然操作符的重载可以通过使用函数实现同样的功能 ...

  4. 重载操作符 operator overloading 学习笔记

    重载操作符,只是另外一种调用函数的方法和表现方式,在某些情况它可以让代码更简单易读.注意不要过度使用重载操作符,除非它让你的类更简单,让你的代码更易读. 1语法 如下: 其中友元,关键字不是必须的,但 ...

  5. [019]转--C++ operator关键字(重载操作符)

    原博客:http://www.cnblogs.com/speedmancs/archive/2011/06/09/2076873.html operator是C++的关键字,它和运算符一起使用,表示一 ...

  6. VC6.0中重载操作符函数无法访问类的私有成员

    整理日: 2015年03月18日 在 C++ 中,操作符(运算符)可以被重载以改写其实际操作.同时我们可以定义一个函数为类的朋友函数(friend function)以便使得这个函数能够访问类的私有成 ...

  7. C++高精度运算类bign (重载操作符)

    大数据操作,有例如以下问题: 计算:456789135612326542132123+14875231656511323132 456789135612326542132123*14875231656 ...

  8. C++ operator关键字(重载操作符)(转)

    operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...

  9. C++中operator关键字(重载操作符)

    operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...

随机推荐

  1. laravel 增加不存在数据库的字段

    有时候您可能想要增加不存在数据库字段的属性数据.这时候只要定义一个获取器即可: public function getIsAdminAttribute() { return $this->att ...

  2. win10提示 磁盘包含不是“PARTITION_BASIC_DATA_GUID"类型的分区

    在win10创建新的磁盘分区的时候,有时候会提示 磁盘包含不是"PARTITION_BASIC_DATA_GUID"类型的分区 如果你试了其他方法都不凑效,那么看看你已经有几个盘( ...

  3. NIO 中文乱码问题的解决代码实现

    之前在网上查询了很多关于解决NIO中文乱码的问题,仁者见仁智者见智,不过就找到的几种方法实现都太繁琐了,稍微研究了下NIO源码,以下是我自己的一种实现,偷懒用最简单的代码去实现是我的习惯! Demo: ...

  4. IE下form表单密码输入框可以输入中文问题

    今天遇到了一个问题: 在IE浏览器登录界面,密码输入框,切换到中文输入法,竟然可以输入中文,已经设置过了input的type="password". 解决方法: 可以给input设 ...

  5. Xshell如何修改字体大小和颜色

    https://jingyan.baidu.com/article/db55b609aac41e4ba30a2f86.html 打开Xshell,点击菜单栏的“文件”->“属性”,或者也可以使用 ...

  6. poj 2993

    跟poj 2996反过来了,这里比较麻烦的就是处理白棋和黑棋各棋子对应的位置 还有在最后打印棋盘式|,:,.的时候会有点繁琐(- - ACMer新手 ): 直接看代码吧: #include<cs ...

  7. Python--day41--threading中的定时器Timer

    定时器Timer:定时开启线程 代码示例: #定时开启线程 import time from threading import Timer def func(): print('时间同步') #1-3 ...

  8. .NET C#与Java比较——Servlet

    目录 1. Servlet 和 Ashx(一般处理程序) 2. Servlet 和 JSP 3. Servlet的生命周期 4. Java Filter 和 HttpModule,ActionFilt ...

  9. Canvas文本设置

    本文的应用对Canvas文本设置相关属性进行了汇总,具体使用说明请参考下面代码: <!DOCTYPE html> <html lang="zh"> < ...

  10. 2018-9-14-win10-UWP-标题栏后退

    title author date CreateTime categories win10 UWP 标题栏后退 lindexi 2018-9-14 20:22:8 +0800 2018-2-13 17 ...