Хорошо, да, название путается. Но это то, что я хочу выполнить:Как вернуть общий тип, имея еще один общий тип в качестве параметра, оба из которых необходимы для реализации взаимодействия?
Я хочу вернуть список, содержащий элементы типа C. И я хочу, чтобы метод получал переменную типа R. И C должен быть классом, реализующим интерфейс, т.е. C_interface, а R должен быть классом, реализующим другой интерфейс, то есть R_interface.
В моем мире этот метод голова должна работать:
public <C implements C_interface, R implements R_interface> List<C> method_name(R r)
Но это не так. Я получаю следующие ошибки в Eclipse:
Multiple markers at this line
- Syntax error on token "implements", ,
expected
- R cannot be resolved to a type
- Syntax error on token "implements", ,
expected
- C cannot be resolved to a type
Если я удалю реализует интерфейсную часть, например:
public <C, R> List<C> method_name(R r)
Все работает отлично. И я думаю, я мог бы просто проверить тип внутри метода. Но если это сделать первым, это будет намного лучше.
Заменить «орудия» на «продолжения». [Ссылка] (https://docs.oracle.com/javase/tutorial/java/generics/bounded.html) – Makoto
https://docs.oracle.com/javase/tutorial/java/generics/boundedTypeParams.html – Radiodef
возможно дубликат [Что означает «T extends Junk» означает в родовом классе в Java?] (http://stackoverflow.com/questions/13632916/what-does-t-extends-junk-mean-in-a-generic- class-in-java) – CKing