В этой программе я создаю общий метод, в котором второй параметр расширяет первый параметр, но когда я передаю строку в качестве первого параметра и массив целых чисел в качестве второго параметра, программа тоже работает нормально. Почему это не дает ошибки времени компиляции, поскольку Integer не расширяет строку?
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");
}
}
}
GenericMethodDemo.<String, Integer>isIn("2", nums)
, и вы получите ошибку компилятора относительно несоответствия границ. - person azurefrog   schedule 19.09.2017T
иV
равнымиObject
. - person Louis Wasserman   schedule 19.09.2017