我看过一些代码,例如:
out.println("print something");
我试过import java.lang.System;
但它不起作用。你怎么用out.println()
?
静态导入可以解决问题:
import static java.lang.System.out;
或者使用导入每个静态方法和字段
import static java.lang.System.*;
@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 进行了大量输出,我认为将流抽象为属性、局部变量或方法会更好。这将使您的应用程序或库更易于维护和更可重用。
(显然,如果您的 Java 程序是一次性的东西,您打算在完成当前任务后丢弃,那么可维护性就不是问题。但另一方面是“丢弃”代码通常不会被丢弃.)
好吧,您通常会使用
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
(这是一个类)的方法。
您必须先创建一个对象。更多关于这里的信息:
// 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");