2

JavaPoetを使用して他のクラスを拡張するクラスを生成したいとします。例えばJavaPoetを使用してスーパークラスコンストラクタを呼び出すコンストラクタを生成する方法

私は、このクラスがあります。

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

を、私はこの1つのように新しいクラスを生成したい:

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

しかし、私は、任意のすぐに使用できるAPIが表示されませんJavaPoetでスーパークラスのコンストラクタを呼び出すコンストラクタを作成します。どのようにこれを行うことができ、ベストプラクティスは何ですか?

答えて

1

はあなたがまたもMethodSpec.Builder#addCodeを使用してCodeBlock.Builder#addStatementを使用して同じコードをビルドすることができMethodSpec.Builder#addStatement

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

使用してそれを行うことができますが、残念ながらは、私の知る限りsuperを呼び出すために使用可能な特定のビルダーはありません。

関連する問題