私は次のようなコードを見てきました:
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のこのような静的インポートの使用は、単純な1回限りのコード以上には適していません。"
だから、彼(または私)がこの解決策がグッドプラクティスであると考えていると想像しないでください。
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");
}
}
これを見てください link 。通常、これは、特定のクラスの静的メソッドを多数使用している場合にのみ実行します。たとえば、私は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
でアクセスされ、さらにPrintStream
型(クラス)のメソッドprintln()
が呼び出されます。
単にインポート:
import static Java.lang.System.*;
あなたはソケットでもこれを見ることができます...
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("hello");
最初にオブジェクトoutを作成する必要があります。詳細はこちら:
// write to stdout
out = System.out;
out.println("Test 1");
out.close();
または単に:
System.out.println("Some text");