java – 如何将Generic方法中的参数同时分配给Integer和Character类?
发布时间:2020-07-03 13:32:38 所属栏目:Java 来源:互联网
导读:为什么这段代码没有显示任何编译错误? 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_
|
为什么这段代码没有显示任何编译错误? 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) (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
