Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将泛型方法中的参数同时指定给整数和字符类?_Java_Generics_Integer_Character_Generic Method - Fatal编程技术网

Java 如何将泛型方法中的参数同时指定给整数和字符类?

Java 如何将泛型方法中的参数同时指定给整数和字符类?,java,generics,integer,character,generic-method,Java,Generics,Integer,Character,Generic Method,为什么这段代码没有显示任何编译错误 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

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

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;
    }
}

那么为什么上面提到的运行良好,为什么不能同时是整数类和字符类的数组,如果它运行,那么为什么它不打印为真,“a”的ASCII值是97,那么它应该打印为真

因为编译器推断
对象
作为调用

Non_genre.genMethod(a, arr3)
在该方法的主体内

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

您可以将对象值与其他对象值进行比较。这听起来有点不正确。应该是你可以互相比较参考文献fine@Sotirios-但是每个循环的T类型是什么,为什么它的打印错误?@RajMalhotra,因为您使用的是
=
。这检查的是身份,而不是平等。@RajMalhotra
T
的类型是
T
。由于它没有边界,因此只能将其视为
对象
,即只有
对象
的方法可用。如果希望类型检查正常工作,可以这样调用它。Non_genre.genMethod(a,arr3),它将给您一个错误,因为您现在已经向编译器暗示T是一个整数,这意味着arr3只能是一个整数[]
static <T> boolean genMethod(T x, T[] y) {
if (r == x)