Java out.println (), как это возможно?

Я видел некоторый код, такой как:

out.println("print something");

Я попробовал import java.lang.System;

но это не работает. Как Вы используете out.println() ?

46
задан tangens 23 March 2010 в 22:41
поделиться

6 ответов

static imports do the trick:

import static java.lang.System.out;

or alternative import every static method and field using

import static java.lang.System.*;

Addendum by @Steve C: note that @sfussenegger said this in a comment on my Answer.

"Использование такого статического импорта System.out не подходит для более чем простого run-once кода."

Поэтому, пожалуйста, не думайте, что он (или я) считает это решение хорошей практикой.

86
ответ дан 26 November 2019 в 20:06
поделиться

Что ж, вы обычно используете

System.out.println("print something");

, который не требует импорта. Однако, поскольку out является статическим полем внутри System, вы можете использовать статический импорт следующим образом:

import static java.lang.System.*;

class Test {
    public static void main(String[] args) {
        out.println("print something");
    }
}

Взгляните на эту ссылку . Обычно вы делаете это только в том случае, если используете много статических методов из определенного класса, например, я использую их все время для утверждений junit и easymock.

6
ответ дан 26 November 2019 в 20:06
поделиться

Или просто:

System.out.println("Some text");
0
ответ дан 26 November 2019 в 20:06
поделиться
PrintStream out = System.out;
out.println( "hello" );
26
ответ дан 26 November 2019 в 20:06
поделиться

Сначала вам нужно создать объект из . Подробнее об этом здесь:

    // write to stdout
    out = System.out;
    out.println("Test 1");
    out.close();
1
ответ дан 26 November 2019 в 20:06
поделиться

Ответ @sfussenegger объясняет, как заставить это работать. Но я бы сказал не делайте этого!

Опытные программисты Java используют и ожидают увидеть

        System.out.println(...);

а не

        out.println(...);

Статический импорт System.out или System.err - это (IMO) плохой стиль, потому что:

  • он нарушает принятую идиому, и
  • он затрудняет отслеживание нежелательных отпечатков, которые были добавлены во время тестирования и не удалены.

Если вы обнаружите, что делаете много выводов в System.out или System.err, я думаю, что лучше абстрагировать потоки в атрибуты, локальные переменные или методы. Это сделает ваше приложение более многоразовым.

16
ответ дан 26 November 2019 в 20:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: