标签: javapoet

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

我使用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)

像上一行一样,如何将数组分配给语句?

java javapoet

2
推荐指数
1
解决办法
1142
查看次数

使用javapoet构建带有开放参数列表的方法

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)

code-generation javapoet parameter-list

2
推荐指数
1
解决办法
881
查看次数

使用 JavaPoet 生成枚举

如何使用 JavaPoet 生成以下枚举类?

public enum Planet {
    MERCURY (3, 2),
    VENUS   (4, 6)
}
Run Code Online (Sandbox Code Playgroud)

java enums javapoet

1
推荐指数
1
解决办法
1021
查看次数

如何用javapoet生成Class参数?

我需要为枚举类生成下一个 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)

java javapoet

1
推荐指数
1
解决办法
832
查看次数

标签 统计

javapoet ×4

java ×3

code-generation ×1

enums ×1

parameter-list ×1