In diesem Programm erstelle ich eine generische Methode, bei der der zweite Parameter den ersten Parameter erweitert, aber wenn ich String als erstes Paameter und Integer-Array als zweiten Parameter übergebe, läuft auch das Programm gut. Warum gibt es keinen Kompilierzeitfehler, da Integer String nicht erweitert?Warum gibt diese generische Methode keinen Fehler bei der Kompilierung?
class GenericMethodDemo {
static <T, V extends T> boolean isIn(T x, V[] y) {
for (int i = 0; i < y.length; i++) {
if (x.equals(y[i])) {
return true;
}
}
return false;
}
public static void main(String args[]) {
Integer nums[] = {1, 2, 3, 4, 5};
if (!isIn("2", nums)) {
System.out.println("2 is not in nums");
}
}
}
nicht roh Typen verwenden, wenn Sie den Compiler wissen, über Ihre Generika wollen. – azurefrog
Probieren Sie 'GenericMethodDemo. isIn (" 2 ", nums)' aus, und Sie erhalten einen Compiler-Fehler bezüglich der Übereinstimmung der Grenzen. –
azurefrog
Warum gibt es keinen Fehler in dieser Form –