2015-06-21 21 views
5

Jak wygenerować metodę z następującym podpisem?JavaPoet Dodaj ogólny parametr

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

Do tej pory mam:

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

EDIT To co powyższy kod generuje (nie wiem jak dodać parametr):

public <T extends Myclass> void doSomething() 

Odpowiedz

9

Wyodrębnij wygenerowaną TypeVariableName do zmiennej, aby można było ponownie użyć jej wartości

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

Następnie dodać parametr tego typu

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

Jeśli chcesz przekazać Generic wpisane strukturę, użyj drogę naśladowania.