Java Обобщения: Foo <T>, Foo, Foobar и Foobar - PullRequest
0 голосов
/ 16 января 2020

В Java Обобщения, учитывая обобщенный c класс / интерфейс Foo<T>, в чем разница между объявлением нового обобщенного c класса: Foobar<T extends Foo<T>> или просто Foobar<T extends Foo>, также почему я могу создать экземпляр generi c class Foo<T> без создания экземпляра параметра типа T ?, т.е. почему я могу написать следующее: Foo var = new Foo();, означает ли это, что класс создается с объектом, через который я могу использовать только -генери c метод? пожалуйста, прости меня, если вопрос не так ясен, пример, над которым я работал, следующий: MyClass<T extends Comparable<T>>

1 Ответ

0 голосов
/ 23 января 2020
class Foo<T> {}

ваш класс.

Foo yourVariable = new Foo();

равно Foo<Object> yourFoo = new Foo<Object>();

class Foobar<T> extends Foo {}

равно class Foobar<T> extends Foo<Object> {}

ответ на ваш вопрос

class YourClass<T extends Comparable<T>> {}

означает, что тип YourClass T может сравнивать себя с объектами T (его класс), тогда как

class YourClass<T extends Comparable> {}

Тип T способен сравнивать себя с объектами класса Object , что не то, что вам нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...