在JavaPoet中将数组分配给MethodSpec语句?
我用它来创建Java代码。我定义了以下数组:在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
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。您需要一个简单的代码块
,然后首先将数组转换为源代码文本
下面是一个使用Java8String.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();