Подтвердить что ты не робот

В чем смысл T extends SomeClass?

В чем разница с объявлением метода следующим образом:

public <T extends SomeClass> void doSomething(T obj)
{
    // Do something.
}

И это:

public void doSomething(SomeClass obj)
{
    // Do Something.
}

Как я вижу это, оба из них указывают, что переданный объект должен быть подклассом типа SomeClass, так зачем вообще разбираться с дженериками в этом случае?

4b9b3361

Ответ 1

В вашем случае это не имеет большого значения.

Но рассмотрим следующее:

public <T extends SomeClass> void doSomething(List<T> obj)

В этом случае вы можете вызвать метод следующими способами:

obj.doSomething(new ArrayList<SubclassOfSomeClass>());
obj.doSomething(new ArrayList<SomeClass>());

Если вы будете использовать

public void doSomething(List<SomeClass> obj)

Вы могли бы сделать это только:

obj.doSomething(new ArrayList<SomeClass>());