我使用JavaPoet创建Java代码。我定义了以下数组:
String[] testArr = new String[] {"1","2"};
Run Code Online (Sandbox Code Playgroud)
和一个构造函数:
ArrayTypeName stringArray = ArrayTypeName.of(String.class);
MethodSpec constroctMethod = MethodSpec.constructorBuilder()
.addModifiers(Modifier.PUBLIC)
.addStatement("$T names", stringArray)
.addStatement("names = $N", testArr)
.build();
Run Code Online (Sandbox Code Playgroud)
前者不起作用。我想创建以下语句:
String[] names = new String[] {"1","2"};
Run Code Online (Sandbox Code Playgroud)
像上一行一样,如何将数组分配给语句?
javapoet 是否可以创建一个带有开放参数列表的方法?创建带有 String[] 参数的方法是没有问题的:
curEnumBuilder.addMethod(MethodSpec.methodBuilder("myMethod")
.addParameter(String[].class, "params", Modifier.FINAL)
.addModifiers(Modifier.PUBLIC)
.returns(String.class)
.build());
Run Code Online (Sandbox Code Playgroud)
但我想创建:
public String myMethod(final String... params)
Run Code Online (Sandbox Code Playgroud) 如何使用 JavaPoet 生成以下枚举类?
public enum Planet {
MERCURY (3, 2),
VENUS (4, 6)
}
Run Code Online (Sandbox Code Playgroud) 我需要为枚举类生成下一个 java.class 参数:
public enum ServiceType {
//....
private final Class<?> mClass; //<<how?
ServiceType(final Class<?> clazz) {
this.mClass = clazz;
}
public Class<?> getCurrentClass() {
return mClass;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
我没有找到 - 如何制作这个领域。
我生成这个类的代码:
File path = new File(Path.ROOT + ENUM_PATH);
TypeSpec.Builder servicesEnumBuilder = TypeSpec.enumBuilder(ENUM_CLASS_NAME)
.addModifiers(Modifier.PUBLIC);
for (Map.Entry<String, String> entry: foundedServices.entrySet()) {
servicesEnumBuilder.addEnumConstant(
entry.getKey().toUpperCase() + ENUM_SUFFIX,
TypeSpec.anonymousClassBuilder("$T", ClassName.get(entry.getValue() , entry.getKey())).build());
}
servicesEnumBuilder.addField(); //<< how add this field: private final Class<?> mClass;
Run Code Online (Sandbox Code Playgroud)