在JavaPoet中将数组分配给MethodSpec语句?

在JavaPoet中将数组分配给MethodSpec语句?,java,javapoet,Java,Javapoet,我用它来创建Java代码。我定义了以下数组: String[] testArr = new String[] {"1","2"}; 和一个构造器: ArrayTypeName stringArray = ArrayTypeName.of(String.class); MethodSpec constroctMethod = MethodSpec.constructorBuilder() .addModifiers(Modifier.PUBLIC) .a

我用它来创建Java代码。我定义了以下数组:

String[] testArr = new String[] {"1","2"};
和一个构造器:

ArrayTypeName stringArray = ArrayTypeName.of(String.class);

MethodSpec constroctMethod = MethodSpec.constructorBuilder()
.addModifiers(Modifier.PUBLIC)
                    .addStatement("$T names", stringArray)
                    .addStatement("names = $N", testArr)
                    .build();
前者不起作用。我要创建以下语句:

String[] names = new String[] {"1","2"};

如何将数组分配给上一行中的语句?

您不能使用
MethodSpec
来获得字符串数组初始化行,afaik。您需要一个简单的
代码块
,然后首先将数组转换为源代码文本

下面是一个使用Java8
String.join
使用JavaPoet1.3从测试数组构建文本的示例(请参见基于索引的格式表达式)


不知道是否延误了。但我注意到,“testArray”似乎是目标类中的一条语句,但在addStatement()中被称为$N。要使$N起作用,它必须是代码中的FieldSpec

FieldSpec testArray = FieldSpec.Builder(...).build();
然后

MethodSpec constroctMethod = MethodSpec.constructorBuilder()
.addModifiers(Modifier.PUBLIC)
                    .addStatement("$T names", stringArray)
                    .addStatement("names = $N", testArr)
                    .build();
MethodSpec constroctMethod = MethodSpec.constructorBuilder()
.addModifiers(Modifier.PUBLIC)
                    .addStatement("$T names", stringArray)
                    .addStatement("names = $N", testArr)
                    .build();