2015-06-21 10 views
5

Come si genera un metodo con la seguente firma?JavaPoet Aggiungi parametro generico

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

Finora ho:

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

EDIT Questo è ciò che il codice di cui sopra sta generando (non so come aggiungere il parametro):

public <T extends Myclass> void doSomething() 

risposta

9

Estrai il TypeVariableName che generi in una variabile in modo da poterne riutilizzare il valore

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

Poi aggiungere un parametro di quel tipo

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

Se volete passare un generico digitato struttura, usare la strada seguire.

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