Java Generics - реализует и расширяет

Я пытаюсь написать что-то вроде

public class A implements B<T implements C> {}

и

public abstract class M<I extends P> extends R<I extends P> implements Q<I extends P> {}

но я получаю ошибки, такие как множественные маркеры и синтаксическая ошибка на токене, ожидается. Пожалуйста, дайте мне знать, как правильно это сделать.

Ответ 1

Если у вас есть интерфейсы в дженериках, вам все равно придется использовать ключевое слово extends.

В вашем случае, если вы знаете, что T будет:

public class A<T extends C> implements B<T> {}

Если вы этого не сделаете, и вам просто нужно реализовать B с типом C:

public class A implements B<C> {}

Для второй части, как только вы определили I, вы можете использовать ее, как и в других ваших общих типах:

public abstract class M<I extends P> extends R<I> implements Q<I> {}

Ресурсы:

Ответ 2

В общих ограничениях нет ключевого слова implements. Это только extends

Кроме того, вы должны указать параметр типа только в определении класса, а не в супертипах. То есть.

public class A<T extends C> implements B<T> {}