groovy–运算符重载
Groovy支持運算符重載,各種運算符被映射到普通的java對象的方法調用,這就使得開發者可以利用運算符重載的優勢來編寫自己的Java或者groovy對象。
下面的表格描述了groovy中的操作符所映射到的方法:
| Operator | Method |
| a + b | a.plus(b) |
| a – b | a.minus(b) |
| a * b | a.multiply(b) |
| a ** b | a.power(b) |
| a / b | a.div(b) |
| a % b | a.mod(b) |
| a | b | a.or(b) |
| a & b | a.and(b) |
| a ^ b | a.xor(b) |
| a++ or ++a | a.next() |
| a– or –a | a.previous() |
| a[b] | a.getAt(b) |
| a[b] = c | a.putAt(b, c) |
| a << b | a.leftShift(b) |
| a >> b | a.rightShift(b) |
| switch(a) { case(b) : } | b.isCase(a) |
| ~a | a.bitwiseNegate() |
| -a | a.negative() |
| +a | a.positive() |
另外需要注意的是下面的所有的操作符,在遇到null的時候,都不會拋出java.lang.NullPointerException
| Operator | Method |
| a == b | a.equals(b) or a.compareTo(b) == 0 ** |
| a != b | ! a.equals(b) |
| a <=> b | a.compareTo(b) |
| a > b | a.compareTo(b) > 0 |
| a >= b | a.compareTo(b) >= 0 |
| a < b | a.compareTo(b) < 0 |
| a <= b | a.compareTo(b) <= 0 |
需要注意的是,“==”操作符并不總是和equals()方法等價。
比如:
1 | def?a =?null |
2 | def?b =?"foo" |
3 | ? |
4 | assert?a != b |
5 | assert?b != a |
6 | assert?a ==?null |
無論a或者b誰是null,都不會拋出java.lang.NullPointerException。
另外在不同類型的對象之間比較的時候,強制類型轉換規則使用于把數字類型轉換為最大的數字類型。所以下面的代碼是有效的:
1 | Byte a =?12 |
2 | Double b =?10 |
3 | ? |
4 | assert?a?instanceof?Byte |
5 | assert?b?instanceof?Double |
6 | ? |
7 | assert?a > b |
轉載于:https://www.cnblogs.com/rollenholt/p/3349047.html
總結
以上是生活随笔為你收集整理的groovy–运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打通Fedora19的ssh服务
- 下一篇: Linux 内核进程管理之进程ID