public class Main {
public static void main(String[] args) {
Integer [] iArray = {11, 22, 33, 44, 55};
String[] sArray = {"Mike", "Soffie", "Flippy", "Digital"};
print(iArray);
print(sArray);
}
public static <Integer> void print(Integer[] array){
for(Integer x: array){
System.out.println(x);
}
}
}
Я не пойму почему при вызове метода print куда мы ложим sArray строковый массив, когда в самом методе указано, что он будет принимать Integer массив, а не строковый, он всё равно отрабатывает (строковый)
Ведь если мы сделаем так:
List<Integer> list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
То если мы введем list.add("Hello")
, то у нас сразу подчеркнет и скажет мол тут Integer
, а не String
, так же и в моём примере я хочу понять, почему компилятор не ругается
В коде вашего метода
public static <Integer> void print(Integer[] array){
for(Integer x: array){
System.out.println(x);
}
}
словом Integer
обозначен не стандартный java.lang.Integer
, а тип-параметр. Такому параметру можно дать любое имя, точно так же, как параметру метода можно дать имя существующей вне этого метода переменной:
int myName;
void myMethod(double myName) {
System.out.println(myName)
}
В вашем примере параметр назван Integer
, видимо, специально, чтобы вас запутать. С таким же успехом метод может быть записан как
public static <T> void print(T[] array){
for(T x: array){
System.out.println(x);
}
}
по смыслу это абсолютно идентичная запись. Такая запись просто означает, что в качестве параметра это метод может получать массив объектов любого типа, а в цикле for
выбирает из массива объекты этого же типа и передает их в качестве параметра методу System.out.println()
. Таким образом, этому методу можно передавать и Integer[]
, и String[]
, и Object[]
-- любые массивы с элементами объектных типов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В Netbeans 10 при открытии проекта показывает синтаксические ошибки:
Здраствуйте, написал javafx приложение, в idea прекрасно компилится, но когда формирую executable jar, не запускаетсяПри запуске через консоль видает...
1Почему в конструктор объекта Enum нельзя передать значение позже (не в самом классе где он автоматически создается)?