簡體   English   中英

如何使用CodeModel初始化2D數組

[英]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);

但它會啟動一維數組

任何幫助表示贊賞

可能不完全相同,但是以下代碼初始化示例2d數組:

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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM