У меня следующий код, и он по праву отказывается компилироваться с ошибкой Локальная переменная numberArray, определенная в прилагаемой области видимости, должна быть окончательной или фактически конечной
InputReader reader = new InputReader(System.in);
int numInputs = reader.nextInt();
int[] numberArray = new int[numInputs];
IntStream.range(0, numInputs).forEach(i -> {
numberArray[i] = reader.nextInt();
});
Однако этот фрагменткода компилируется и работает без ошибок, хотя и здесь, по сути, я делаю то же самое, изменяя inputArray внутри лямбды.
public int[] reverse(int[] inputArray) {
IntStream.range(0, inputArray.length/2).forEach(i-> {
int temp = inputArray[i];
inputArray[i] = inputArray[inputArray.length-1-i];
inputArray[inputArray.length-1-i] = temp;
});
return inputArray;
}
Есть идеи, почему существует это несоответствие?