println
является методом, принадлежащим к out
член класса System
. Без этого квалификатора Java не знает, что такое println
.
Когда вы выполняете статический импорт, вы можете получить доступ к членам класса, не предоставляя полное имя. Таким образом, ваш статический импорт java.lang.System
позволяет получить доступ ко всему, что есть у System
. Это означает, что вы можете получить доступ к out
(экземпляр PrintWriter
) который принадлежит System
. Но это не означает, что вы можете получить доступ к println
непосредственно, так как он принадлежит out
. Поэтому вы должны сказать Java, как добраться до println
, пройдя через out
.
Посмотрите на это так. Предположим, у вас есть следующая структура:
MyClass
|
+---Something
| |
| +---- methodOne
| |
| +---- methodTwo
| |
| +---- OtherThing
| |
| +---- otherMethodOne
| |
| +---- otherMethodTwo
+---method
Если вы сделали статический импорт с MyClass.*
:
- Вы имеете доступ к
method()
(Java переводит это MyClass.method()
)
- Вы имеете доступ к
Something
. (Java переводит это значение в MyClass.Something
)
- не не имеет доступа к другим материалам под
Something
. Например, вы не можете просто вызвать methodOne()
, потому что Java переведет это на MyClass.methodOne()
, и нет метода под названием methodOne()
под номером MyClass
. Этот метод принадлежит Something
, поэтому вы можете сделать Something.methodOne()
, или Something.OtherThing.otherMethodOne()
.
Если вы сделали статический импорт с MyClass.Something.*
:
- Вы имеете доступ к
methodOne
. (Java переводит это значение в MyClass.Something.methodOne
)
- У вас есть доступ к
methodTwo
. (Java переводит это значение в MyClass.Something.methodTwo
)
- У вас есть доступ к
OtherThing
. (Java переводит это значение в MyClass.Something.OtherThing
)
- У вас нет имеют необработанный доступ к
otherMethodOne
или otherMethodTwo
; вам нужно будет сделать OtherThing.otherMethodOne()
или OtherThing.otherMethodTwo()
.
- У вас нет нет имеют доступ к
method
, потому что Java переводит это значение в MyClass.Something.method
, и такого метода нет в классе Something
.
'out' является статическим членом' System', содержащим ссылку PrintWriter. 'println' не является статическим методом, а скорее экземпляром экземпляра PrintWriter. –