这样的方法声明有什么区别:
public <T extends SomeClass> void doSomething(T obj)
{
// Do something.
}
和这个:
public void doSomething(SomeClass obj)
{
// Do Something.
}
我的看法是,他们两个都指定传入的对象必须是
SomeClass
类型的子类,那么在这种情况下为什么还要烦恼泛型呢? 最佳答案
在您的情况下,差别不大。
但是请考虑以下几点:
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>());