it-swarm.com.de

Java out.println () wie ist das möglich?

Ich habe einen Code gesehen wie:

out.println("print something");

Ich habe versucht import Java.lang.System;

aber es funktioniert nicht Wie benutzt du out.println()?

44
user69514

statische Importe machen den Trick:

import static Java.lang.System.out;

oder importieren Sie alternativ jede statische Methode und jedes Feld mit

import static Java.lang.System.*;

Nachtrag von @Steve C: Beachten Sie, dass @sfussenegger dies in einem Kommentar zu meiner Antwort gesagt hat.

"Die Verwendung eines solchen statischen Imports von System.out eignet sich nicht für mehr als nur einmaligen Code."

Stellen Sie sich also nicht vor, dass er (oder ich) der Meinung ist, dass diese Lösung eine gute Praxis ist.

83
sfussenegger
PrintStream out = System.out;
out.println( "hello" );
26
tangens

@ sfusseneggers Antwort erläutert, wie dies funktioniert. Aber ich würde sagen tu es nicht!

Erfahrene Java-Programmierer verwenden und erwarten es zu sehen 

        System.out.println(...);

und nicht 

        out.println(...);

Ein statischer Import von System.out oder System.err ist (IMO) ungültig, weil:

  • es bricht das akzeptierte Idiom und
  • dies macht es schwieriger, unerwünschte Ausdrucke zu finden, die während des Tests hinzugefügt und nicht entfernt wurden.

Wenn Sie feststellen, dass Sie eine Menge an System.out oder System.err ausgeben, denke ich, dass es besser ist, die Streams in Attribute, lokale Variablen oder Methoden zu abstrahieren. Dadurch wird Ihre Anwendung wiederverwendbar.

14
Stephen C

Nun, Sie würden normalerweise verwenden

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

was keine importe erfordert. Da out jedoch ein statisches Feld in System ist, können Sie einen statischen Import wie folgt schreiben:

import static Java.lang.System.*;

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

Schauen Sie sich diesen link an. Normalerweise würden Sie dies nur tun, wenn Sie viele statische Methoden aus einer bestimmten Klasse verwenden, wie ich sie ständig für junit-Asserts und easymock verwende.

5
Casey

out ist ein PrintStream-Typ einer statischen Variablen (Objekt) der System-Klasse und println() ist eine Funktion der PrintStream-Klasse.

class PrintStream
{
    public void println(){}    //member function
    ...
}

class System
{
    public static final PrintStream out;   //data member
    ...
}

Aus diesem Grund wird auf die statische Variable (Objekt) out mit dem Klassennamen System zugegriffen, der die Methode println() des Typs PrintStream (die eine Klasse ist) weiter aufruft.

3
Dushyant Thakur

einfach importieren:

import static Java.lang.System.*;
1
user2844259

das sieht man auch in Steckdosen ...

PrintWriter out = new PrintWriter(socket.getOutputStream());

out.println("hello");
1
Exorcismus

Sie müssen zuerst ein Objekt out erstellen. Mehr dazu hier:

    // write to stdout
    out = System.out;
    out.println("Test 1");
    out.close();
1
Oskar Kjellin

Oder einfach:

System.out.println("Some text");
0
Chris Knight