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