Dlaczego ten kod nie pokazuje żadnego błędu kompilacji?W jaki sposób parametr w metodzie ogólnej można przypisać do klasy Integer i klasy Character w tym samym czasie?
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;
}
}
Jeśli piszemy normalną kod tak (pokazany poniżej)
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");
}
}
Dlaczego powyższe powyżej działa dobrze, w jaki sposób można T będzie klasy Integer i tablicą T będzie klasy znaków w tym samym czasie, a jeśli działa, to dlaczego jego drukowanie nie jest prawdziwe, ASCII vaue "a" to 97, więc powinno się wydrukować prawdę.
* Można porównywać wartości obiektu z innymi wartościami obiektów po prostu dobrze *. Brzmi to trochę niepoprawnie. Powinno być * Możesz porównać odniesienia do siebie po prostu dobrze * – CKing
@ Sotirios-Ale jaki będzie typ T w każdej pętli, i dlaczego jej drukowanie jest fałszywe? –
@RajMalhotra Ponieważ używasz '=='. To sprawdza tożsamość, a nie równość. – CKing