Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这两个方法签名有什么区别
public <T extends BaseClass> T myMethod(String p1, String p2) {}
public BaseClass myMethod(String p1, String p2) {}
哪个更好,哪些地方适合使用这些。
好吧,我知道泛型,我问这个问题的原因是这两种方法都可以返回基类的扩展,并且我遇到了一段使用泛型版本的代码,我试图找出原因?
1. 下的签名将使您免于将方法的返回值向下转换为BaseClass. 但是,它本质上是类型不安全的,因为T仅从调用此方法的表达式的类型推断。换句话说,T就是“你想要的任何东西”,这显然是行不通的,因为该方法返回了一个确定类型的对象。
BaseClass
T
如果你的方法有一个T-typed参数,或者T作为这样一个参数的类型参数涉及,那么这个签名是有意义的;这样它就很少了。