java这两个通用函数之间有什么区别?
正如标题所说,我想知道这些函数之间的区别是什么。
为什么我应该/不应该在foo2中提供<T>
public class Base<T> {
public T[] foo(int i){
/*Do something*/
}
public <T> T[] foo2(int i){
/*Do something*/
}
}
你可以在下面搜索框中键入要查询的问题!
正如标题所说,我想知道这些函数之间的区别是什么。
为什么我应该/不应该在foo2中提供<T>
public class Base<T> {
public T[] foo(int i){
/*Do something*/
}
public <T> T[] foo2(int i){
/*Do something*/
}
}
# 1 楼答案
第二个函数的
T
隐藏了类的类型参数T
。这意味着第二个函数中的T
引用不同的类型T
。这种命名很混乱,应该避免当然,如果您确实想要引用不同的泛型类型,您可以这样做,但是您应该以不同的方式命名类型参数。以下示例与您的示例相同,但不隐藏
Base
中定义的T
: