T扩展SomeClass的意义是什么?
与这样的方法声明有什么区别:
public <T extends SomeClass> void doSomething(T obj)
{
// Do something.
}
还有这个:
public void doSomething(SomeClass obj)
{
// Do Something.
}
在我看来,它们都指定传入的对象必须是 类型的子类 ,那么在这种情况下,为什么要为泛型而烦恼呢?SomeClass
与这样的方法声明有什么区别:
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>());