Вам нужно будет импортировать PrintStream
, только если вам нужно использовать PrintStream
(имя класса) в вашем коде.Использование поля в другом объекте типа PrintStream
не требует этого.
То есть import
означает компилятор, что означает PrintStream
(буквальный текст) в вашем коде.Нельзя сказать компилятору, что вы будете использовать PrintStream
объект, который вы получите откуда-то еще (в данном случае System
).
Другими словами: import
- это знание того, какскомпилировать исходный текст;это не о том, что используется во время выполнения.Например, импорт не записывается в файлы классов;информация просто не нужна во время выполнения.Определения полей и переменных хранятся с их полностью определенными именами классов, а не import
-относительными.Поскольку информация о типе out
в System
говорит о том, что это java.io.PrintStream
, компилятор (а позже и JVM) знает, что это java.io.PrintStream
, независимо от того, импортируете ли вы PrintStream
в своем коде или нет.