java - 在 JavaPoet 中使用继承的聪明方法

标签 java javapoet

我正在尝试以这种方式构建一个类(使用 JavaPoet 库):

theClass = TypeSpec.classBuilder(classe.getName())
                                    .addModifiers(javax.lang.model.element.Modifier.valueOf(classe.getProte().toString().toUpperCase()), Modifier.FINAL) //todo
                                    .addMethods(methods)
                                    .superclass(father)
                                    .addFields(fields)
                                    .build();

“父亲”字段可以什么都不是。我尝试使用将 NULL 放入其中,但它以这种方式给出了一个异常。有没有一种聪明的写法?

我可以这样写

if (father!=null){
   theClass = TypeSpec.classBuilder(classe.getName())
                                .addModifiers(javax.lang.model.element.Modifier.valueOf(classe.getProte().toString().toUpperCase()), Modifier.FINAL) //todo
                                .addMethods(methods)
                                .superclass(father)
                                .addFields(fields)
                                .build();
}
else{
   theClass = TypeSpec.classBuilder(classe.getName())
                                .addModifiers(javax.lang.model.element.Modifier.valueOf(classe.getProte().toString().toUpperCase()), Modifier.FINAL) //todo
                                .addMethods(methods)
                                .addFields(fields)
                                .build();
}

但这可不是什么好事。有什么建议吗?

最佳答案

为了缩短代码,您可以立即做的一件事是首先用您想要的大部分字段填充构建器:

public TypeSpec aNiceMethod(
     ClassModel classe, TypeName father, ArrayList methods, ArrayList fields) {

   TypeSpec.Builder theClassBuilder = TypeSpec.classBuilder(classe.getName())
       .addModifiers(
           javax.lang.model.element.Modifier.valueOf(
               classe.getProte().toString().toUpperCase()),
               Modifier.FINAL)
       .addMethods(methods)
       .addFields(fields);
   if (father != null) {
        theClassBuilder.superclass(father);
   }
   return theClassBuilder.build();
}

关于java - 在 JavaPoet 中使用继承的聪明方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43033936/

相关文章:

java - 停止 Java 计时器

java - 对生成的代码运行 Lint/Sonarqube 分析

java - 通过 AS400 验证连接

Java:如何在 Canvas 上绘图?

java - 为 JNI 控制字段选择哪种可见性?

JavaPoet - 如何向字段添加注释?

java - 当 WAR 的大小为 41M 时,如何避免在 WAR 中复制 40M 的 java 库?

java - 生成对具有可变数量参数的方法的调用

JavaPOET - 只有类有父类(super class),而不是 INTERFACE