Вызов метода с индексом массива - PullRequest
0 голосов
/ 26 июня 2019

У меня есть это упражнение:

public class Test2 {

    public static void main (String [] args){
        int index=1;
        getArray()[index=2]++; //why???
 }

    public static int[] getArray() {
        return null;
    }

}

На мой взгляд, для вызова статического метода getArray необходимо написать:

getArray(); ... без индекса!

Я посчитал этот код ошибкой компилятора.

Можете ли вы объяснить, почему getArray() [index =2]++; компилируется без ошибок?

1 Ответ

3 голосов
/ 26 июня 2019

Давайте пойдем шаг за шагом:

  • метод должен возвращать массив типа int (public static int[])
  • , к которому массив получает доступ после индекса 2 (* 1007)*)
  • наконец, результат этого доступа (значение int) может быть увеличен (whateverArray[2]++)
  • и, да, второстепенная вещь, вы можете назначить переменную и использовать ее какИндекс массива в том же операторе тоже

Таким образом, это все допустимый синтаксис.Конечно, во время выполнения вы получите исключение nullpointer.

Компилятор может знать, что метод возвращает значение null, но стандартный javac не заботится о таких тонких деталях (для результатов метода).И любой приличный IDE немедленно скажет вам, что этот код сломается при выполнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...