如何使用 CodeModel 初始化二维数组
How to initialise a 2D array using CodeModel
我需要像下面这样初始化一个二维数组
Object[][] someName = {
{"param1","param2","param3"},
{"param4","param5","param6"}
};
我试过
JExpression exp = JExpr.newArray(codeModel.ref(String.class)).add(JExpr.lit("param1").add(JExpr.lit("param2"));
methodBlock.decl(JMod.NONE, codeModel.ref(Object.class).array().array(), dataProviderName, exp);
但它初始化一维数组,
感谢任何帮助
可能不完全相同,但以下代码初始化了示例二维数组:
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);
这会生成以下内容,明确声明内部数组:
public class TestClass {
public void runme() {
Object[][] someName = new String[][] {new String[] {"param1", "param2", "param3"}, new String[] {"param4", "param5", "param6"}};
}
}
您尝试的代码几乎是正确的,您只需要在 newArray()
调用中声明数组:JExpr.newArray(codeModel.ref(String.class).array())
我需要像下面这样初始化一个二维数组
Object[][] someName = {
{"param1","param2","param3"},
{"param4","param5","param6"}
};
我试过
JExpression exp = JExpr.newArray(codeModel.ref(String.class)).add(JExpr.lit("param1").add(JExpr.lit("param2"));
methodBlock.decl(JMod.NONE, codeModel.ref(Object.class).array().array(), dataProviderName, exp);
但它初始化一维数组,
感谢任何帮助
可能不完全相同,但以下代码初始化了示例二维数组:
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);
这会生成以下内容,明确声明内部数组:
public class TestClass {
public void runme() {
Object[][] someName = new String[][] {new String[] {"param1", "param2", "param3"}, new String[] {"param4", "param5", "param6"}};
}
}
您尝试的代码几乎是正确的,您只需要在 newArray()
调用中声明数组:JExpr.newArray(codeModel.ref(String.class).array())