Вопрос:

В чем разница между импортом java.util. *; и импортировать java.util.stream ;?

java import

6429 просмотра

1 ответ

2418 Репутация автора

Я использую функциональность Java 8 Streamдля управления содержимым массива в моей программе:

Obstacle[] closestObstacles = Stream.generate(() -> new Obstacle()).limit(8).toArray(Obstacle[]::new); // one for each line of attack

Когда я пытаюсь импортировать Streamтак: import java.util.*;я получаю ошибку «Поток символа не может быть разрешен». Когда я вместо этого импортирую, Streamкак это: java.util.stream;все работает, как ожидалось. Почему это происходит? Я не использую Streamили что-либо с именем «поток» в другом месте в моей программе, так что я не думаю, что это конфликт имен?

Автор: Adam Источник Размещён: 30.12.2017 10:00

Ответы (1)


4 плюса

6777 Репутация автора

Решение

Я сомневаюсь, что ваша вторая попытка ( import java.util.stream;) работает. Как @JonSkeet отметил, что должно привести к ошибке компиляции: error: cannot find symbol. Может ты хотел import java.util.stream.*;?

К вашему актуальному вопросу:
если вы импортируете с подстановочным знаком, то есть *символом звездочки ( ), будут импортированы только прямые классы в этом пакете, а не классы в подпакетах . Таким образом import java.util.*, вы импортируете классы вроде ArrayList, LinkedListи Random. Полный список можно найти здесь . Класс Streamфактически находится в пакете java.util.streamподпакета и не импортируется, когда вы import java.util.*;.

Импортировать Streamможно либо import java.util.stream.*;(все классы в этом пакете), либо только import java.util.stream.Stream;(полное доменное имя нужного вам класса).

Автор: Turing85 Размещён: 30.12.2017 10:10
Вопросы из категории :
32x32