I need to initialise a 2d array like below
Object[][] someName = {
{\"param1\",\"param2\",\"param3\"},
It might not be exactly the same, but the following code initializes the example 2d array:
JDefinedClass testClass = codeModel._class("TestClass");
JMethod runme = testClass.method(JMod.PUBLIC, codeModel.VOID, "runme");
JBlock methodBlock = runme.body();
JExpression exp = JExpr.newArray(codeModel.ref(String.class).array())
.add(JExpr.newArray(codeModel.ref(String.class))
.add(JExpr.lit("param1")).add(JExpr.lit("param2")).add(JExpr.lit("param3")))
.add(JExpr.newArray(codeModel.ref(String.class))
.add(JExpr.lit("param4")).add(JExpr.lit("param5")).add(JExpr.lit("param6")));
methodBlock.decl(JMod.NONE, codeModel.ref(Object.class).array().array(), "someName", exp);
This generates the following, which explicitly declares the inner arrays:
public class TestClass {
public void runme() {
Object[][] someName = new String[][] {new String[] {"param1", "param2", "param3"}, new String[] {"param4", "param5", "param6"}};
}
}
The code you tried was almost correct, you just needed to declare the array within the newArray()
call: JExpr.newArray(codeModel.ref(String.class).array())