So verkürzen Sie System.out.println ()

122

Bitte geben Sie an, wo ich die Bibliothek finden kann, um den kürzeren Ausdruck von zu verwenden, System.out.println()und wo ich diese Bibliothek platzieren soll.

Eugene
quelle
2
Sie möchten dies nur verwenden, weil der Ausdruck kürzer ist?
Erick Robertson
61
Wenn Sie Ihrem Projekt eine Bibliothek hinzufügen, um einen Ausdruck zu verkürzen, sind Ihre Prioritäten nicht in Ordnung.
Erick Robertson
7
Dann vertraue mir, wenn du es falsch machst.
PeterK
6
Ich denke, das braucht das Code-Golf-Tag.
Mark Peters
3
Die Verwendung von System.out ist in einer gut gestalteten Anwendung im Allgemeinen schlecht, daher spielen die Antworten keine Rolle ...
Bananeweizen

Antworten:

310

Protokollieren von Bibliotheken

Sie könnten Protokollierungsbibliotheken verwenden, anstatt das Rad neu zu erfinden. Log4j zum Beispiel werden Methoden für unterschiedliche Botschaften bieten wie info(), warn()und error().

Hausgemachte Methoden

oder machen Sie einfach eine eigene printlnMethode und nennen Sie sie:

void println(Object line) {
    System.out.println(line);
}

println("Hello World");

IDE-Tastaturkürzel

IntelliJ IDEA und NetBeans:

Sie tippen soutund drücken TAB, und es tippt System.out.println()für Sie, wobei sich der Cursor an der richtigen Stelle befindet.

Finsternis:

Geben Sie ein sysound drücken Sie CTRL+ SPACE.

Andere

Finden Sie ein "Snippets" -Plugin für Ihren bevorzugten Texteditor / Ihre bevorzugte IDE

Statischer Import

import static java.lang.System.out;

out.println("Hello World");

Entdecken Sie JVM-Sprachen

Scala

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Nashorn

print('Hello, World!'); 
Bakkal
quelle
18
import static System.out;ist eine seltene Praxis und meiner Meinung nach ziemlich unnötig, und daher out.printlnkann das Sehen zumindest anfänglich Verwirrung stiften. Der statische Import wird eher idiomatisch verwendet, aber in diesem speziellen Fall ist dies nicht der Fall.
Polygenschmierstoffe
11
+1 für Eclspe & Netbeans-Verknüpfungen. Ich bin über den statischen Import unentschlossen.
David J. Liszewski
4
In Eclipse können Sie die sysoutVorlage unter Java> Editor> Vorlagen ändern . Sie können es sogar kürzer machen, indem Sie es sysoutdurch sooder so ersetzen :)
BalusC
3
@ BalusC Bessere Idee - so STRG + LEERTASTE öffnet Stapelüberlauf in einem Browserfenster und Sie beenden die Codierung
Michael Mrozek
1
soutfunktioniert auch in IntelliJ IDEA (NetBeans hat es wahrscheinlich von ihnen kopiert :) Wie auch immer, gut zu erwähnen, dass die Länge von System.out.println()IMHO irrelevant wird.
Jonik
27
void p(String l){
System.out.println(l);
}

Kürzeste. Tue es.

Rup
quelle
7
+1, nur weil es amüsant ist, wenn Java zur Abwechslung einen Code Golf gewinnt. ;-)
Chimeracoder
Eigentlich ist es direkt aus "Beginn der Java-Programmierung: Der objektorientierte Ansatz" hier wrox.com/WileyCDA/WroxTitle/…
uchuugaka
17

Java ist eine ausführliche Sprache.

Wenn Sie erst 3 Tage alt sind und dies Sie bereits stört, ist es vielleicht besser, eine andere Sprache wie Scala zu lernen:

scala> println("Hello World")
Hello World

In einem losen Sinne würde dies die Verwendung einer "Bibliothek" qualifizieren, um kürzere Ausdrücke zu ermöglichen;)

dbyrne
quelle
4
Dies ist mein fünftes Jahr in Java. Bin ich noch pünktlich?
Tom
2
Absolut! Scala hat eine sehr schrittweise Lernkurve für Java-Entwickler.
Dbyrne
Ich bin süchtig nach Clojure
Peter
1
Richtig, Java ist eine ausführliche Sprache. Sich Fragen wie das OP zu stellen, ist ein normaler Teil des Kennenlernens.
Barfuin
6
Ich bin süchtig nach Java.
ceklock
14

Einige interessante Alternativen:

OPTION 1

PrintStream p = System.out;
p.println("hello");

OPTION 2

PrintWriter p = new PrintWriter(System.out, true);
p.println("Hello");
Stephen Paul
quelle
9

Für IntelliJ IDEA Art soutund PresseTab .

Für Eclipse - Typ sysound drücken Sie Ctrl+ Space.

Max Gabderakhmanov
quelle
2
Ihre Antwort hängt wahrscheinlich von einer IDE ab. Vielleicht möchten Sie erklären, wo genau diese Verknüpfung funktioniert. Ansonsten hilft deine Antwort niemandem wirklich.
Standardgebietsschema
1
@defaultlocale Danke. Ja, es ist wahr. Ich habe einige spezifische Informationen hinzugefügt.
Max Gabderakhmanov
7

Verwenden Sie die log4j- oder JDK-Protokollierung, damit Sie einfach einen statischen Logger in der Klasse erstellen und wie folgt aufrufen können:

LOG.info("foo")
Jon Bringhurst
quelle
2

Wie Bakkal erklärte, für die Tastaturkürzel in netbeans in Extras-> Optionen-> Editor-> Codevorlagen gehen und Ihre eigenen Tastenkombinationen hinzufügen oder bearbeiten.

In ist Eclipsees auf Vorlagen.

dazito
quelle
1

Meine Lösung für BlueJ besteht darin, die neue Klassenvorlage "stdclass.tmpl" in "Programme (x86) \ BlueJ \ lib \ english \ templates \ newclass" zu bearbeiten und diese Methode hinzuzufügen:

public static <T> void p(T s)
{
    System.out.println(s);
}

Oder diese andere Version:

public static void p(Object s)
{
    System.out.println(s);
}

Für Eclipse verwende ich die vorgeschlagene Verknüpfung syso + <Ctrl> + <Space>:)

carlos_lm
quelle
1

Ein kleiner Punkt vielleicht, aber:

import static System.out;

public class Tester
{
    public static void main(String[] args)
    {
        out.println("Hello!"); 
    }
}

... hat einen Kompilierungsfehler generiert. Ich habe den Fehler korrigiert, indem ich die erste zu lesende Zeile bearbeitet habe:

import static java.lang.System.out;
CaitlinG
quelle
1
package some.useful.methods;

öffentliche Klasse B {

    öffentliche statische Leere p (Objekte) {
        System.out.println (s);
    }}
}}
Paket first.java.lesson;

statische importieren some.useful.methods.B. *;

öffentliche Klasse A {

    public static void main (String [] args) {

        p ("Hallo!");

    }}
}}
Denis
quelle
0

In Java 8:

    List<String> players = new ArrayList<>();
     players.forEach(System.out::println);
Abhilash
quelle
-1

Die Verwendung von System.out.println () ist eine schlechte Praxis (verwenden Sie besser das Protokollierungsframework) -> Sie sollten nicht viele Vorkommen in Ihrer Codebasis haben. Die Verwendung einer anderen Methode zum einfachen Kürzen scheint keine gute Option zu sein.

Marc T.
quelle
Ich würde nicht zustimmen. Wenn Sie bereits eine normale Anmeldung haben, ist die Verwendung von Sysout eine bessere Möglichkeit, um zu unterscheiden, was Sie gerade sehen müssen. Außerdem ist die Verwendung von sysout viel schneller, und wenn Sie viel debuggen, zählt jede Sekunde.
Bruchlinie