【发布时间】:2013-12-18 15:17:28
【问题描述】:
这样的方法声明有什么区别:
public <T extends SomeClass> void doSomething(T obj)
{
// Do something.
}
还有这个:
public void doSomething(SomeClass obj)
{
// Do Something.
}
在我看来,他们都指定传入的对象必须是SomeClass类型的子类,那么在这种情况下为什么还要使用泛型呢? p>
【问题讨论】:
-
我经常想知道这一点,但由于害怕可怕的 {-1} 而没有足够的勇气问。所以+1。
-
说“Java 泛型完全没用”是一个大胆且不正确的说法。我不否认它们有缺陷且功能齐全,但这并不意味着它们毫无用处
-
天哪,再次抱歉,我似乎无法阅读,所以我要回家了。在上述情况下,没有意义,但在其他特定情况下,根据下面 micha 的回答,它可能很有用。该实现适用于开发人员而不是计算机,适用于那些碰巧对人有用的情况!
-
在上面的例子中我看不出有什么区别,但是如果返回类型是 T 类型,它会的。在这种情况下,客户端代码不必强制转换。