Groovy “<<”操作符"

本文介绍了Groovy语言中&lt;&lt;操作符的多种用途,包括对List和Set对象的添加操作、对StringBuffer对象的拼接操作及对流对象的写入操作。此外还展示了&lt;&lt;操作符在元编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“<<”操作符在Java语言里被我们熟知的是位运算中的左移运算符。在Groovy语言里,它依然是左移运算符,这我们都很熟悉,在这里就不再多说。而我们要说的却是除此之外,在Groovy语言里为“<<”运算符新增的功能。
一.对List对象和Set对象的操作
对于List对象,在前面的文字里我们提到过:
       def list = ['a','b','c']
 
       list.each{
       println it
    }
 
       println'-----------------------'
       list<<'e'
       list<<'f'
       list<<"haha"
      
       list.each{
           println it
    }
 
不错,我们在Groovy语言里,使用“<<”运算符取代了Java语言中List类的add方法,带来了编码方面的简单和快捷。上面代码的输出结果为:
a
b
c
-----------------------
a
b
c
e
f
haha
 
除了List对象外,“<<”操作符同样能够Set对象提供add功能,请看下面的例子:
       def set = ['a','b','c'as Set
      
       set.each{
           println it
       }
 
       println'-------------------------'
       set<<'i'
       set<<'j'
       set<<'b'
      
       set.each{
           println it
    }
 
为Set对象add元素同样简单,下面是它的输出结果:
a
c
b
-------------------------
i
a
c
j
b
 
为了验证Set对象的特性,我特意给set对象多add了一个“b”字符串,最后打印的结果证明了Set对象的特性:1.没有顺序;2.没有重复的元素。
 
二.对StringBuffer对象的操作
在Java语言中,对StringBuffer对象的操作如下:
       StringBuffer sb = new StringBuffer()
       sb.append('I can say my ')
       sb.append('a')
       sb.append('b')
       sb.append('c')
      
    System.out.println(sb.toString())
 
打印结果为:
I can say my abc
 
Groovy语言中,同样是使用“<<”操作符来对append方法进行简化的:
       def sb = new StringBuffer()
 
       sb<<'I'
       sb<<' can say'
       sb<<' my a'
       sb<<'b'
       sb<<'c'
      
    println sb.toString()
 
打印结果为:
I can say my abc
 
 
三.对流对象的操作
在Java语言中,对流对象的操作通常是read和write,请看下面的例子:
       try
       {
           OutputStreamWriter wtr= new OutputStreamWriter(new FileOutputStream("TheOutput.txt"));
           wtr.write("abc");
           wtr.close();
       }
       catch(Exception e)
       {
           e.printStackTrace();
    }
 
而上面的例子在Groovy语言中将是下面的样子:
       def wtr= new OutputStreamWriter(new FileOutputStream('TheOutput.txt'))
       wtr<< 'abc'
    wtr.close()
 
不错,是使用“<<”操作符代替了write方法。
 
四.其他
除了上面的一些对“<<”操作符的常用方法,在Groovy语言中,还有一些不常用的地方也会使用到“<<”操作符。请看下面的例子:
class Empl {
   
    String name
 
 staticvoid main(args) {
      
       Empl.metaClass.nameInUpperCase << {-> delegate.name.toUpperCase() }
       def b = new Empl(name:"Tom")
 
       println b.nameInUpperCase()
      
   
 }
 
}
 
在这里,“<<”操作符是赋值的意思,即将后面的闭包赋给Empl.metaClass.nameInUpperCase。整个语句与下面的语句等同:
 
Empl.metaClass.nameInUpperCase = {-> delegate.name.toUpperCase() }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值