В Java, как метод System.out.println работает как в статическом, так и нестатическом контексте? - PullRequest
4 голосов
/ 20 сентября 2019

Как метод System.out.println работает как в статическом, так и в нестатическом контексте?

Есть ли какая-либо конкретная реализация JVM, ответ на этот вопрос?

1 Ответ

1 голос
/ 20 сентября 2019

System.out - это статическое поле / глобальный объект / синглтон.

Оно доступно везде, нет необходимости в нестатическом контексте.

На этомобъект (экземпляр PrintStream) вы можете вызвать метод println.

Обратите внимание, что PrintStream#println является , а не статическим методом.Но вы можете вызывать нестатические методы даже из статических методов, если у вас есть экземпляр для их вызова (например, System.out здесь).

Статический и нестатический контекст имеет значение, только если вынужен доступ к this (текущий экземпляр вашего собственного класса).Здесь это не нужно (если только вы не хотите сделать System.out.println(this) - это не будет работать внутри статического метода).

Ничто из этого не является "особенным" в System.out или не требует внутренней магии JVM.

...