这两种方法签名之间有什么区别
public <T extends BaseClass> T myMethod(String p1, String p2) {}
public BaseClass myMethod(String p1, String p2) {}
哪一种更好,哪些是适合使用它们的地方。
好吧我知道泛型,我问这个问题的原因是两个方法都可以返回基类的扩展,我遇到了一段使用泛型版本的代码,我试图弄清楚为什么?< / p>
答案 0 :(得分:6)
1.下的签名将使您免于将方法的返回值向下转换为BaseClass
的特定子类。但是,它本质上是类型不安全的,因为T
仅从调用此方法的表达式的类型推断出来。换句话说,T
是“你想要的任何东西”,由于该方法返回一个确定类型的对象,它显然无法工作。
如果你对方法有一个T
- 类型参数,或者T
作为这种参数的类型参数,那么这个签名就有意义了;这种方式很少。