JavaPoet Добавить общий параметр

Как мне сгенерировать метод со следующей подписью?

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

Пока у меня есть:

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

EDIT Это то, что генерирует приведенный выше код (я не знаю, как добавить параметр):

public <T extends Myclass> void doSomething()

person Eliezer    schedule 21.06.2015    source источник


Ответы (2)


Извлеките 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();
person Sotirios Delimanolis    schedule 21.06.2015

Если вы хотите передать общую типизированную структуру, используйте следующий способ.

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