Вызов get (статический метод массива) из экземпляра массива - PullRequest
1 голос
/ 20 июня 2019

Новое в Java и ООП в целом.Я делаю онлайн-курс Линды, и в курсе есть пример использования Array.get для извлечения 2-го элемента из массива:

String[] myFavoriteCandyBars = {"Twix", "Hershey's", "Crunch"};
System.out.println(Array.get(myFavoriteCandyBars, 2));

И инструктор объяснил, что get является статическим методом изкласс "Array".

Но когда я попытался определить:

 `Array[] testarray = new Array[10];`

И используя:

 `testarray.get(testarray[10]);`

, я получаю ошибку: cannot resolve method 'get(java.lang.reflect.Array)'

Но я не понимаю, почему - testarray является объектом класса Array, а класс Array имеет метод "get", поэтому, хотя это плохая практика, почему я не могу это сделать?

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Класс Array является внутренним классом Java, содержащим только общедоступные статические методы, и его предполагаемое использование не должно быть напрямую реализовано.Следующий код:

testarray.get(testarray[10]);

завершается ошибкой, поскольку testarray имеет тип Array[], а не Array, и поэтому не имеет статического метода get().Гипотетически говоря, если бы вы могли вызвать Array#get для экземпляра, он должен работать, но, как уже упоминалось выше, Array не может быть создан.

Более типичный способ использования Array будет выглядеть примерно так:

String[] testarray = new String[10];
testarray[1] = "Snickers";
System.out.println(Array.get(testarray, 1));

То есть создайте массив нужного типа, а затем используйте Array#get для доступа к любому элементу, который вы хотите.

0 голосов
/ 20 июня 2019

get() не является методом в классе массива (как в объекте byte []). get() относится к классу Array. Делать Array.get(testarray, 0) - это то, что вы хотите. Несмотря на это, не делайте этого, вместо этого сделайте testarray[0].

Всякий раз, когда вы используете статический метод, вы не должны вызывать его из объекта, вы должны использовать экземпляр класса, поэтому вместо выполнения

Object o = new Object();
o.staticMethod();

Do:

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