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,因为您使用的是
=
。这检查的是身份,而不是平等。@RajMalhotraT
的类型是T
。由于它没有边界,因此只能将其视为对象
,即只有对象
的方法可用。如果希望类型检查正常工作,可以这样调用它。Non_genre.genMethod(a,arr3),它将给您一个错误,因为您现在已经向编译器暗示T是一个整数,这意味着arr3只能是一个整数[]
static <T> boolean genMethod(T x, T[] y) {
if (r == x)