2013-07-22 32 views
-1

是什么方法返回<T延伸的BaseClass>&基类

  1. public <T extends BaseClass> T myMethod(String p1, String p2) {}

  2. public BaseClass myMethod(String p1, String p2) {}

哪个更好这两种方法签名之间的差和是什么适当的地方应该使用这些地方。

好吧我知道泛型,我问这个问题的原因是这两个方法都可以返回基类的扩展,我碰到了一段使用泛型版本的代码,我试图弄清楚为什么?

+0

您需要了解泛型。 – SLaks

+0

downvote的原因? – RegisteredUser

+0

阅读关于泛型的java教程。 –

回答

6

1.中的签名将您从方法返回值的倒数转化为BaseClass的特定子类中。然而,它本质上是类型不安全的,因为T仅从调用此方法的表达式的类型推断。换句话说,T是“无论你想要它”,这显然不能工作,因为该方法返回一个确定类型的对象。

如果你有一个T -typed 参数的方法,或T参与作为这样的说法的类型参数,那么这个签名才有意义;这种方式很少。

相关问题