groovy 将String转换为String[]在用于变量定义或作为函数参数时会产生不同的结果

7rtdyuoh  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(60)

我尝试在Groovy中实现一个小函数,将一个String数组作为输入并以YAML格式打印。
Groovy似乎以不同的方式将String变量转换为String[],无论是在变量定义中还是在函数参数的定义中。
下面的代码片段显示了这种奇怪的行为:

// #1
println '#1'
def h = 'one'
println h.class
String[] a = h
println a.class
println a.length
println a

// #2
println '#2'
String f(String[] param) {
  println param.class
  println param.length
  println param
}
f(h)

字符串
运行Groovy 2.4.16:

#1
class java.lang.String
class [Ljava.lang.String;
3
[o, n, e]
#2
class [Ljava.lang.String;
1
[one]


我搜索了Groovy规范,没有找到任何解释这种行为的东西。
有没有人能解释一下为什么:

  • 将String传递给变量定义中的String[]变量将String拆分为各个字符,
  • 而将一个String传递给一个需要String[]参数的函数会用给定的字符串创建一个大小为1的数组吗?

我本以为这两种情况会产生同样的结果。

hjzp0vay

hjzp0vay1#

第二部分根本不是强制/转换;您使用的是像Java(语言)中一样的可变参数,底层JVM没有数组的概念并且总是使用数组。
第一部分大致是通过列表转换为数组

相关问题