/ / Inicializácia Array je nemotorný - groovy

Inicializácia Array je neohrabaná - groovy

Momentálne mám kód

static  Collection<Object[]> defineObjects() {
def myObjects = new Object[2][4]

myObjects[0] = [object11,object12,object13,object14]
myObjects[1] = [object21,object22,object23,object24]

return myObjects;
}

Je to nepríjemné, že musím definovať veľkosť poľa skôr ako len inicializovať.

Existuje elegantnejší spôsob, ako kódovať túto funkciu?

odpovede:

1 pre odpoveď č. 1

Nemusíte definovať veľkosť poľa.Vyberte dva príklady:

import groovy.transform.CompileStatic
import groovy.transform.TypeChecked

@CompileStatic
@TypeChecked
class Objects {

static void main(String[] args) {
println defineObjects()
println defineObjects2()
}

static Collection<Object[]> defineObjects() {
def myObjects = [
[new Object(), new Object(), new Object()] as Object[],
[new Object(), new Object(), new Object()] as Object[]
]
return myObjects
}

static Object[][] defineObjects2() {
def myObjects = [
[new Object(), new Object(), new Object()] as Object[],
[new Object(), new Object(), new Object()] as Object[]
] as Object[][]
return myObjects
}
}

V prípade použitia Collection<Object[]> môžete jednoducho pridať zoznamy a odovzdať ich Object[], V prípade dvojrozmerného poľa urobíte to isté + zložíte konečný zoznam Object[][].

Výkon

[[java.lang.Object@4667ae56, java.lang.Object@77cd7a0, java.lang.Object@204f30ec], [java.lang.Object@e25b2fe, java.lang.Object@754ba872, java.lang.Object@146ba0ac]]
[[java.lang.Object@4dfa3a9d, java.lang.Object@6eebc39e, java.lang.Object@464bee09], [java.lang.Object@f6c48ac, java.lang.Object@13deb50e, java.lang.Object@239963d8]]