这样的方法声明有什么区别:

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>());

10-08 09:34
查看更多