Почему моя программа показывает этот тип ошибки при итерации ArrayList с использованием foreach l oop? - PullRequest
1 голос
/ 14 марта 2020

[Я не могу быть приведен к java .lang.Integer на com.cg.genuine.ui.ArrayLisPr.main (ArrayLisPr. java: 12)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayLisPr {
    public static void main(String[] args) {

        int[] x={11,20,3,4,5};
        List<Integer> po = new ArrayList(Arrays.asList(x));
        for(Integer val:po){
            System.out.println(val);
        }
    }
}

1 Ответ

1 голос
/ 14 марта 2020

x - это отдельный объект, который является int[], и поэтому не может быть приведен к Integer. Если вы удалите промежуточную переменную и напрямую используете Arrays.asList, Java сможет автоматически устанавливать каждый int на Integer индивидуально:

List<Integer> po = new ArrayList<>(Arrays.asList(11,20,3,4,5));

РЕДАКТИРОВАТЬ:

Если вы хотите сохранить ссылку int[], вам придется преобразовать ее в List<Integer> вручную. Одним из способов сделать это является потоковая передача и упаковка всех элементов:

List<Integer> po = Arrays.stream(x).boxed().collect(Collectors.toList());
...