Я видел некоторый код, например:
out.println("print something");
Я пробовал import java.lang.System;
но он не работает. Как вы используете out.println()
?
Я видел некоторый код, например:
out.println("print something");
Я пробовал import java.lang.System;
но он не работает. Как вы используете out.println()
?
статический импорт делает трюк:
import static java.lang.System.out;
или, наоборот, импортировать каждый статический метод и поле, используя
import static java.lang.System.*;
Добавление by @Steve C: обратите внимание, что @sfussenegger сказал это в комментарии к моему ответу.
"Использование такого статического импорта System.out не подходит для более простого кода с однократным запуском".
Поэтому, пожалуйста, не думайте, что он (или я) считаю, что это решение является хорошей практикой.
PrintStream out = System.out;
out.println( "hello" );
@sfussenegger объясняет, как это сделать. Но я бы сказал, не делай этого!
Опытные Java-программисты используют и ожидают увидеть
System.out.println(...);
а не
out.println(...);
Статический импорт System.out или System.err - это (IMO) плохой стиль, потому что:
Если вы обнаружите, что делаете много результатов в System.out или System.err, я думаю, что лучше абстрагировать потоки в атрибутах, локальных переменных или методах. Это сделает ваше приложение более многоразовым.
Хорошо, вы обычно используете
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.
out
является PrintStream
типом статической переменной (объекта) класса System
и println()
является функцией класса PrintStream
.
class PrintStream
{
public void println(){} //member function
...
}
class System
{
public static final PrintStream out; //data member
...
}
Вот почему к статической переменной (объекту) out
обращается имя класса System
, которое дополнительно вызывает метод println()
этого типа PrintStream
(который является классом).
Сначала вам нужно создать объект out. Подробнее об этом здесь:
// write to stdout
out = System.out;
out.println("Test 1");
out.close();
вы можете видеть это также в сокетах...
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("hello");
просто импортировать:
import static java.lang.System.*;
Или просто:
System.out.println("Some text");