Generic 方法中的参数如何同时分配给 Integer 和 Character class?

How can a parameter in a Generic method be assigned to an Integer and a Character class at the same time?

为什么这段代码没有显示任何编译错误?

public class Generic
{
    public static void main(String[] args)
    {
        Character[] arr3={'a','b','c','d','e','f','g'};
        Integer a=97;
        System.out.println(Non_genre.genMethod(a,arr3));
    }
}

class Non_genre
{
    static<T> boolean genMethod(T x,T[] y)
    {
        int flag=0;
        for(T r:y)
        {
            if(r==x)
                flag++;
        }
        if(flag==0)
            return false;
        return true;
    }
}

如果我们像这样写一个正常的代码(如下所示)

public class Hello
{
    public static void main(String[] args)
    {
        Character arr=65;
        Integer a='A';
        if(arr==a)  //Compilation Error,shows Incompatible types Integer and Character
            System.out.println("True");
    }
}   

那为什么上面的运行没问题,T是Integerclass,T的array怎么可能同时是Characterclass,如果它运行 那么为什么它不打印 true,'a' 的 ASCII 值是 97,所以它应该打印 true。

因为编译器将 Object 推断为您调用

的类型参数
Non_genre.genMethod(a, arr3)

在该方法的主体内

static <T> boolean genMethod(T x, T[] y) {

您的类型参数 T 是无界的,因此只能被视为 Object.

因为xy的元素属于同一类型(T),所以可以比较一下。

if (r == x)