4

我想生成一个使用 JavaPoet 扩展其他类的类。

例如我有这个类:

@MyAnnotation
public class ClassA {
  public ClassA(String paramA, int paramB) {
     // some code
  }
} 

我想生成这样的新类:

public class Generated_ClassA extends ClassA {
  public Generated_ClassA (String paramA, int paramB) {
     super(paramA, paramB);
  }
} 

但是,我在 JavaPoet 中没有看到任何现成的 API 来创建调用超类构造函数的构造函数。如何做到这一点以及最佳实践是什么?

4

1 回答 1

6

您可以使用MethodSpec.Builder#addStatement

MethodSpec.constructorBuilder()
          .addModifiers(Modifier.PUBLIC)
          .addParameter(String.class, "paramA")
          .addParameter(Integer.TYPE, "paramB")
          .addStatement("super(paramA, paramB)")
          .build();

您还可以使用MethodSpec.Builder#addCode和构建相同的代码,CodeBlock.Builder#addStatement但不幸的是, AFAIK没有可用于调用的特定构建器super

于 2016-09-01T11:48:44.677 回答