为什么会抛出异常?
messageSource.getMessage('UserService.msg.forgot.unknown', ["test@mail.com"], null)
Run Code Online (Sandbox Code Playgroud)
除非我这样做......
def Object[] args = ["test@mail.com"]
messageSource.getMessage('UserService.msg.forgot.unknown', args, null)
Run Code Online (Sandbox Code Playgroud)
Nat*_*hes 18
因为["test@mail.com"]计算为ArrayList,而不是数组:
groovy:000> o = ["asdf"]
===> [asdf]
groovy:000> o.getClass()
===> class java.util.ArrayList
Run Code Online (Sandbox Code Playgroud)
OTOH您的声明创建一个对象数组:
groovy:000> Object[] args = ["asdf"]
===> [Ljava.lang.Object;@14e113b
Run Code Online (Sandbox Code Playgroud)
你正在调用的方法需要一个数组.您可以使用as
以下命令创建数组:
Object[] args = ["asdf"] as Object[]
Run Code Online (Sandbox Code Playgroud)
Groovy创建者提出了更高级别的数据结构,如列表惯用语,而数组则用于与Java的互操作性.
在工作中的Coders采访中, Guy Steele谈到了设计语言时的选择:
"这就是霍夫曼的编码问题.如果你把事情弄得简洁,那么事情就会变得更加冗长.因此,在设计一种语言时,你要考虑的事情之一是,'我想做什么?很容易说出来并且很容易做对吗?但是有了这样的理解,为了那个目的而用完了字符或符号,你将不得不做一些其他更难说的东西."
看起来Groovy看起来更简洁,副作用是数组变得更加冗长.
归档时间: |
|
查看次数: |
6716 次 |
最近记录: |