Использование подстановочных знаков для <R extends Record>
Хотя правильный ответ на ваш конкретный вопрос уже дан Тило , я думаю, что вы хотели сделать этопросто не пишите полную подпись этого промежуточного типа, потому что она вам не нужна и потому что она утомительна.Вы можете использовать подстановочный знак:
SelectConditionStep<?> query = ...;
Result<?> result = query.fetch();
Поскольку в API jOOQ тип <R extends Record>
ограничен Record
, этот подстановочный знак все еще неявно ограничен также Record
, поэтому, в принципе,вышеприведенное неявно совпадает с:
SelectConditionStep<? extends Record> query = ...;
Result<? extends Record> result = query.fetch();
Это означает, что когда вы повторяете результат, вы все равно можете присвоить элементам Record
:
for (Record record : result) { ... }
Caveat: Unions,коррелированные подзапросы и т. д.
Тип <R extends Record>
используется в нескольких элементах API, включая объединения, коррелированные подзапросы и т. д. Если вы используете подстановочный знак, вы не можете использовать свой запрос как подзапрос в этом синтаксисе.elements
Дополнительное примечание относительно типов XYZStep
jOOQ
В качестве дополнительного примечания обратите внимание, что рекомендуется избегать ссылок на типы XYZStep
jOOQ.Присвойте свой запрос Select<?>
или ResultQuery<?>
вместо:
Select<?> query = ...;
Result<?> result = query.fetch();