Во-первых, давайте посмотрим на предполагаемый тип T
: учитывая типы ваших параметров (BotApiMethod<Serializable>
и SentCallback<Message>
), T
следует выводить либо на Serializable
, либо на Message
,Но в то же время текущая реализация требует, чтобы оба параметра имели одинаковую T
.Вот почему ваша текущая попытка не работает.Имейте в виду, что в Java, дженерики инвариантны .
Если вы не можете изменить данное определение executeAsync(...)
, ваша проблема не будет решена с указанными вами параметрами.
Если параметр T
является существенным и проект допускает различные общие параметры Method
и Callback
, которые должны иметь только общий супертип T
, определение executeAsync(...)
можно изменить на:
public <T extends Serializable,
Method extends BotApiMethod<? extends T>,
Callback extends SentCallback<? extends T>>
void executeAsync(Method method, Callback callback)
Если параметр T
не является обязательным, его можно полностью удалить, что приведет к следующему определению executeAsync(...)
:
public <Method extends BotApiMethod<? extends Serializable>,
Callback extends SentCallback<? extends Serializable>>
void executeAsync(Method method, Callback callback)