作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
下面的代码怎么可能编译通过?据我所知,count 函数是用两种不同的类型调用的,但编译器并没有提示,而是愉快地编译了这段代码。
public class Test {
public static <T> int count(T[] x,T y){
int count = 0;
for(int i=0; i < x.length; i++){
if(x[i] == y) count ++;
}
return count;
}
public static void main(String[] args) {
Integer [] data = {1,2,3,1,4};
String value = "1";
int r =count(data,value);
System.out.println( r + " - " + value);
}
}
最佳答案
T
被向上强制转换为 Object
。 Integer[]
可以向上转换为 Object[]
,String
可以向上转换为 Object
,并且它类型检查。
关于java - 使用两个不同的泛型参数调用泛型函数仍然可以编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928723/
我是一名优秀的程序员,十分优秀!