Почему реализация универсального интерфейса настолько противоречива? - PullRequest
1 голос
/ 16 октября 2010
interface Foo<T extends Number>{
}

class Bar<T extends Number> implements Foo<T>{

}

Почему класс должен быть написан таким образом вместо:

class Bar<T extends Number> implements Foo<T extends Number>{
}

Конечно, второй способ более понятен.

Ответы [ 2 ]

5 голосов
/ 16 октября 2010

Потому что это то же самое T, поэтому излишне повторять это extends Number.

2 голосов
/ 16 октября 2010

В строке

class Bar<T extends Number> implements Foo<T> {

T определяется в первом случае и используется во втором. extends Number ограничивает тип, с которым можно создать экземпляр T. Вы можете поставить такие ограничения только в том месте, где определено T.

Это похоже на обычные параметры функции, где вы пишете тип только в объявлении, а не в тех местах, где вы используете параметр.

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