如何在 Groovy 中声明字符串数组?

问题描述 投票:0回答:3

如何在 Groovy 中声明字符串数组?我正在尝试如下,但它抛出一个错误

def String[] osList = new String[]

No expression for the array constructor call at line: 

我做错了什么?

groovy
3个回答
7
投票

首先:欢迎来到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官方文档,看看自己是否找不到解决方案!


4
投票
​def arr = [] as String[]

String[] arr = [] as String[]

这应该可以。您可以在这里测试并尝试:https://groovyconsole.appspot.com/


4
投票

一个简单的方法是

String[] osList = []
assert osList.class.array
assert 'java.lang.String[]' == osList.class.typeName

另一个问题是这个定义相当无用。这是一个不可变的零长度 String[],只能在某处用作常量。

© www.soinside.com 2019 - 2024. All rights reserved.