微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何将Generic方法中的参数同时分配给Integer和Character类?

为什么这段代码没有显示任何编译错误
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怎么可能是Integer类和T的数组同时是Character类,如果它的运行然后为什么它不打印为true,’a’的ASCII vaue是97,所以它应该打印真实.

解决方法

因为编译器会将Object推断为调用的类型参数
Non_genre.genMethod(a,arr3)

在该方法的主体内

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

你的类型参数T是无界的,因此只能被视为一个对象.

由于x和y的元素属于同一类型(T),因此可以比较它们.

if (r == x)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐