我仍然在加快groovy必须提供的快捷方式。Groovy - 将字符串拆分为FIFO队列
是否有一个更短的'更groovier'的方式来实现将字符串分割为FIFO队列?
这是我目前有:
String source
Queue<Character> chars = new LinkedList<Character>(Arrays.asList(source.value))
我仍然在加快groovy必须提供的快捷方式。Groovy - 将字符串拆分为FIFO队列
是否有一个更短的'更groovier'的方式来实现将字符串分割为FIFO队列?
这是我目前有:
String source
Queue<Character> chars = new LinkedList<Character>(Arrays.asList(source.value))
这难道不是工作?
Queue<Character> chars = source.value as Queue<Character>
(假设source.value
是String
)
其实,我只是尝试这样做:
source = [ value:'hello' ]
Queue<Character> queue = source.value as Queue<Character>
println queue.class.name
并打印出
String_delegateProxy
在哪里我本来期望java.util.Queue
最好工作示例我可以想出的是:
Queue<Character> queue = new LinkedList<Character>(source.value as List)
作为LinkedList
实现Queue
接口
这就够了(字符串 - >的char [] - >链表)
Queue<Character> chars = '1234'.chars as LinkedList
assert '1' == chars.remove()
assert '2' == chars.remove()
assert '3' == chars.remove()
assert '4' == chars.remove()
关于以前的评论的一件事。
将任何东西铸造到接口在较新版本的groovy中创建代理(1.7+或许不确定)。至少除了常用的'as List'或'Set'转换之外的任何东西。
此代理将接口方法委托给铸造对象,调用方式如InvokerHelper.invokeMethod(delegate, 'remove', args)
。见DGM#asType(Object, Class<T>)
和groovy.util.ProxyGenerator
。
String_delegateProxy tim got是这些代理之一,通过将字符串投射到队列创建。
不幸的是,没有。我得到这个:'org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法实例化:java.util.Queue的实例。 ' – 2011-04-05 13:39:58
什么版本的Groovy?似乎在webconsole上工作......并在我的机器上使用1.7.10 – 2011-04-05 13:41:03
啊,也许我需要更新。我使用1.7.7。我会尝试与1.7.10 – 2011-04-05 13:43:53