Какие методы я могу использовать? - PullRequest
0 голосов
/ 24 октября 2018

Я писал простой метод, который возвращает минимальное и максимальное значение массива int.

return new int[]{Arrays.stream(arr).min().getAsInt(), Arrays.stream(arr).max().getAsInt()};

И это заставило меня задуматься, почему я могу использовать метод getAsInt (), пока он издругой класс, чем тот, с которым я работаю (Массивы)?Мне даже не пришлось импортировать класс OptionalInt, почему так?Что решает, какие методы я могу и не могу использовать в данном конкретном случае?Заранее благодарю за любой ответ.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

На Arrays, в частности, вы вызываете только метод stream: https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#stream-int:A- есть и другие, но это тот, который принимает массив int с.
Затем он производит IntStream, который max / min создает OptionalInt, и вы вызываете getAsInt для этого объекта, а не для Arrays.

Возможно, вы спрашиваете, можете ли вы вызывать методы дляобъекты, которые вы «откуда-то» получаете, без непосредственного import их классов: ответ «да», это уже происходит в самом простом «Hello World»: когда вы пишете System.ou.println(...), вы вызываете println для PrintStream, который никто не импортирует при написании «Hello World».

0 голосов
/ 24 октября 2018

Это потому, что метод min() возвращает объект OptionalInt.Затем вы можете вызвать метод getAsInt().Вы не вызываете этот метод из класса Arrays.Каждый метод возвращает значение определенного типа.

...