我还在快速了解常规提供的快捷方式。
是否有一种更短的“更加通常”的方式来将字符串拆分为FIFO队列?
这是我目前所拥有的:
String source
Queue<Character> chars = new LinkedList<Character>(Arrays.asList(source.value))
答案 0 :(得分:1)
这不起作用吗?
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
接口
答案 1 :(得分:1)
这就足够了(String - &gt; char [] - &gt; LinkedList)
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'或'as Set'转换之外的任何内容。
此代理使用InvokerHelper.invokeMethod(delegate, 'remove', args)
等调用将接口方法委托给转换对象。见DGM#asType(Object, Class<T>)
和groovy.util.ProxyGenerator
。
String_delegateProxy tim got是通过将String转换为Queue而创建的代理之一。