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
.
因为x
和y
的元素属于同一类型(T
),所以可以比较一下。
if (r == x)
为什么这段代码没有显示任何编译错误?
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
.
因为x
和y
的元素属于同一类型(T
),所以可以比较一下。
if (r == x)