-1

这两个方法签名有什么区别

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

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

哪个更好,哪些地方适合使用这些。

好吧,我知道泛型,我问这个问题的原因是这两种方法都可以返回基类的扩展,并且我遇到了一段使用泛型版本的代码,我试图找出原因?

4

1 回答 1

6

1. 下的签名将使您免于将方法的返回值向下转换为BaseClass. 但是,它本质上是类型不安全的,因为T仅从调用此方法的表达式的类型推断。换句话说,T就是“你想要的任何东西”,这显然是行不通的,因为该方法返回了一个确定类型的对象。

如果你的方法有一个T-typed参数,或者T作为这样一个参数的类型参数涉及,那么这个签名是有意义的;这样它就很少了。

于 2013-07-22T14:39:13.460 回答