Groovy对象数组的初始化

24

我正在寻找在Groovy中初始化对象数组的最简洁语法。

给定:

class Program {
    String id = ""
    String title = ""
    String genre = ""   
}

我目前正在做这件事:

Program[] programs = [
    new Program([id:"prog1", title:"CSI", genre:"Drama"]),
    new Program([id:"prog2", title:"NCIS", genre:"Drama"]),
    new Program([id:"prog3", title:"Criminal Minds", genre:"Crime drama"]), 
] as Program[]

我记得在Java中有一种更紧凑的语法,可能不需要使用new关键字。在Groovy中,实现这一点最紧凑的语法是什么?


3
你能展示一下Java中这种更紧凑的语法的例子吗? - Igor Artamonov
好的,我的记忆出了点问题。我已经有一段时间没有写Java代码了。缩短版本确实只适用于基本类型,而不适用于对象。在Java中,我能够编写的最短代码不需要在调用构造函数时提及参数名称,但仍然需要使用new关键字。我已相应地编辑了我的原始帖子。 - Captain Franz
1个回答

30
@groovy.transform.Canonical
class Program {
    String id = ""
    String title = ""
    String genre = ""   
}

Program[] programs = [
    ["prog1", "CSI", "Drama"],
    ["prog2", "NCIS", "Drama"],
    ["prog3", "Criminal Minds", "Crime drama"]
]

println programs
请也回答 @Igor 的问题。

1
或者你可以将 def programs 改为 Program[] programs,并且去掉末尾的 as Program[] :-) - tim_yates
好的,更有意义且代码更简洁。立即进行更改。谢谢。 - dmahapatro
谢谢。这个方法很好用。我也回答了Igor的问题并相应地编辑了我的原始帖子。 - Captain Franz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接