T扩展SomeClass有什么意义?

时间:2013-12-18 15:17:29

标签: java generics

这样的方法声明有什么不同:

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

而且:

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

我看到它的方式,它们都指定在中传递的对象必须是类型SomeClass的子类,那么为什么在这个实例中根本没有使用泛型呢?

1 个答案:

答案 0 :(得分:28)

在你的情况下它并没有多大区别。

但请考虑以下因素:

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