使用两个不同的泛型参数调用泛型函数仍然可以编译

2024-04-30

下面的代码怎么可能编译通过?据我所知, 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. The Integer[]可以升级为Object[],以及String被升级为Object,并进行类型检查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用两个不同的泛型参数调用泛型函数仍然可以编译 的相关文章

随机推荐