Captain Franz
Captain Franz

Reputation: 986

Groovy initialization of array of objects

I am looking for the most compact syntax to initialize an array of objects in Groovy. Given:

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

I am currently doing this:

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[]

I seem to recall that in Java there is a more compact syntax, possibly not requiring to use the new keyword. What is the most compact Groovy syntax to accomplish this?

Upvotes: 25

Views: 65944

Answers (1)

dmahapatro
dmahapatro

Reputation: 50265

@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

Please also answer @Igor's question.

Upvotes: 31

Related Questions