2015-06-21 81 views
5

我將如何生成具有以下簽名的方法?JavaPoet添加通用參數

public <T extends MyClass> void doSomething(T t) 

到目前爲止,我有:

MethodSpec.methodBuilder("doSomething") 
     .addModifiers(Modifier.PUBLIC) 
     .addTypeVariable(TypeVariableName.get("T", MyClass.class)) 
     .build() 

編輯這就是上面的代碼生成(我不知道如何添加參數):

public <T extends Myclass> void doSomething() 

回答

9

將您生成的TypeVariableName解壓縮爲變量,以便重用其值

TypeVariableName typeVariableName = TypeVariableName.get("T", MyClass.class); 

然後如果你想通過一個通用類型的結構,使用如下方法添加類型

MethodSpec spec = MethodSpec.methodBuilder("doSomething") 
          .addModifiers(Modifier.PUBLIC) 
          .addTypeVariable(typeVariableName) 
          .addParameter(typeVariableName, "t") // you can also add modifiers 
          .build(); 
1

的參數。

MethodSpec loadListInteger = MethodSpec.methodBuilder("loadListInteger") 
        .addModifiers(Modifier.PUBLIC) 
        .returns(void.class) 
        .addParameter(ParameterizedTypeName.get(List.class, Integer.class), "list") 
        .build();