如何在 Groovy 中声明字符串数组?我正在尝试如下,但它抛出一个错误
def String[] osList = new String[]
No expression for the array constructor call at line:
我做错了什么?
首先:欢迎来到SO!
您有几个选项可以在 groovy 中创建数组。
但是让我们从你做错了什么开始。
def String[] osList = new String[]
您在这里同时使用了
def
和 String[]
。
Def 是一个匿名类型,这意味着 groovy 会找出它适合你的类型。 String[]是声明的类型,所以groovy在这里看到的是:
String[] String[] osList = new String[]
这显然行不通。
然而,数组需要固定大小,需要将其作为创建数组的参数给出:
Type[] arr = new Type[sizeOfArray]
在你的情况下,如果你想在数组中有 10 个项目,你会这样做:
String[] osList = new String[10]
如果您不知道有多少个字符串,请改用列表。在大多数情况下,ArrayList 就可以做到这一点:
List<String> osList = new ArrayList<>()
现在您可以通过调用以下方式添加项目:
osList.add("hey!")
或使用 groovy 的列表添加运算符:
osList << "hey!"
更多问题请参考groovy官方文档,看看自己是否找不到解决方案!
def arr = [] as String[]
或
String[] arr = [] as String[]
这应该可以。您可以在这里测试并尝试:https://groovyconsole.appspot.com/
一个简单的方法是
String[] osList = []
assert osList.class.array
assert 'java.lang.String[]' == osList.class.typeName
另一个问题是这个定义相当无用。这是一个不可变的零长度 String[],只能在某处用作常量。