подтип дженериков Java в интерфейсе - PullRequest
1 голос
/ 24 июня 2011

Если у меня есть следующий интерфейс, и я хочу его реализовать

public interface A<E extends Comparable<E>>{
    //code
}

Каков правильный синтаксис для объявления реализации класса? Я получаю сообщение об ошибке

public class B<E extends Comparable<E>> implements A<E extends Comparable<E>>{}

Должно ли это просто читать implements A<E> или просто implements A?

Ответы [ 2 ]

3 голосов
/ 24 июня 2011

Если тип Comparable E, например, String, вы захотите:

public class B implements A<String> { ... }

Если вы хотите сохранить объявление параметра общего типа в B, выбудет иметь:

public static class B<E extends Comparable<E>> implements A<E> { ... }

Обратите внимание, что E в A не относится к E в B, то есть действует следующее:

public static class B<Foo extends Comparable<Foo>> implements A<Foo> { ... }

(хотите ли вы различить или нет в своем коде, я не знаю, но это может помочь в понимании)

2 голосов
/ 24 июня 2011
public class B<E extends Comparable<E>> implements A<E>{}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...