Come accorciare System.out.println ()


122

Per favore consigli su dove posso trovare la lib per usare l'espressione più breve di System.out.println()e dove dovrei collocarla.


2
Vuoi usarlo solo perché l'espressione è più breve?
Erick Robertson

61
Se hai intenzione di aggiungere una libreria al tuo progetto solo per abbreviare un'espressione, le tue priorità sono fuori uso.
Erick Robertson

7
Allora stai sbagliando, credimi.
PeterK

6
Mi sembra che questo abbia bisogno del tag code-golf.
Mark Peters

3
L'uso di System.out è generalmente pessimo in un'applicazione ben progettata, quindi le risposte non contano davvero ...
Bananeweizen

Risposte:


310

Librerie di registrazione

Potresti usare le librerie di registrazione invece di reinventare la ruota. Log4j, ad esempio, fornirà metodi per diversi messaggi come info(), warn()e error().

Metodi fatti in casa

o semplicemente crea un printlntuo metodo e chiamalo:

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

println("Hello World");

Scorciatoie da tastiera IDE

IntelliJ IDEA e NetBeans:

si digita, soutquindi si preme TAB, e il testo digita System.out.println()per te, con il cursore al posto giusto.

Eclisse:

Digita sysoquindi premi CTRL+ SPACE.

Altro

Trova un plug-in "snippet" per il tuo editor di testo / IDE preferito

Importazione statica

import static java.lang.System.out;

out.println("Hello World");

Esplora i linguaggi JVM

Scala

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Rinoceronte

print('Hello, World!'); 

18
import static System.out;è una pratica rara e del tutto inutile secondo me, e quindi vedere out.printlnpuò creare confusione almeno inizialmente. L'importazione statica ha un utilizzo più idiomatico, ma questo caso particolare non lo è.
lubrificanti poligenici

11
+1 per le scorciatoie Eclspe e Netbeans. Sono indeciso sull'importazione statica.
David J. Liszewski

4
In Eclipse puoi modificare il sysoutmodello in Java> Editor> Modelli . Puoi anche renderlo più breve sostituendolo sysoutdi socirca :)
BalusC

3
@BalusC Idea migliore - soCTRL + SPAZIO apre Stack Overflow in una finestra del browser e interrompi la programmazione
Michael Mrozek

1
soutfunziona anche in IntelliJ IDEA (NetBeans probabilmente l'ha copiato da loro :) Comunque, è bene menzionarlo - la lunghezza di System.out.println()diventa irrilevante con esso IMHO.
Jonik


17

Java è un linguaggio dettagliato.

Se sei solo 3 giorni e questo ti dà già fastidio, forse faresti meglio ad imparare una lingua diversa come Scala:

scala> println("Hello World")
Hello World

In senso lato, ciò si qualificherebbe come usare una "libreria" per abilitare espressioni più brevi;)


4
Questo è il mio quinto anno in Java, sono ancora in tempo?
Tom

2
Assolutamente! Scala ha una curva di apprendimento molto graduale per gli sviluppatori Java.
dbyrne

Sono dipendente da Clojure
Peter

1
Esatto, Java è un linguaggio dettagliato; porsi domande come se l'OP fosse una parte normale per conoscerlo.
barfuin

6
Sono dipendente da Java.
orologio

14

Alcune alternative interessanti:

OPZIONE 1

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

OPZIONE 2

PrintWriter p = new PrintWriter(System.out, true);
p.println("Hello");

9

Per Intellij IDEA digitare soute premere Tab.

Per Eclipse digitare sysoe premere Ctrl+ Space.


2
La tua risposta probabilmente dipende da un IDE. Potresti voler spiegare dove funziona esattamente questa scorciatoia. Altrimenti la tua risposta non aiuta davvero nessuno.
locale predefinito

1
@defaultlocale Thanks. Si è vero. Ho aggiunto alcune informazioni specifiche.
Max Gabderakhmanov

7

Usa log4j o JDK logging in modo da poter creare un logger statico nella classe e chiamarlo in questo modo:

LOG.info("foo")

2

Come ha spiegato Bakkal, per le scorciatoie da tastiera, netbeanspuoi andare su strumenti-> opzioni-> editor-> modelli di codice e aggiungere o modificare le tue scorciatoie.

In Eclipseè su modelli.


1

La mia soluzione per BlueJ è modificare il modello New Class "stdclass.tmpl" in Program Files (x86) \ BlueJ \ lib \ english \ templates \ newclass e aggiungere questo metodo:

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

O quest'altra versione:

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

Per quanto riguarda Eclipse sto usando il collegamento suggerito syso + <Ctrl> + <Space>:)


1

Un punto minore forse, ma:

import static System.out;

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

... ha generato un errore in fase di compilazione. Ho corretto l'errore modificando la prima riga per leggere:

import static java.lang.System.out;

1
package some.useful.methods;

public class B {

    public static void p (Object s) {
        System.out.println (s);
    }
}
pacchetto first.java.lesson;

import static some.useful.methods.B. *;

public class A {

    public static void main (String [] args) {

        p ( "Ciao!");

    }
}

0

In Java 8:

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

-1

Usare System.out.println () è una cattiva pratica (usa meglio il framework di registrazione) -> non dovresti avere molte occorrenze nella tua base di codice. Usare un altro metodo per accorciarlo semplicemente non sembra una buona opzione.


Non sono d'accordo. Se disponi già di una normale registrazione, usare Sysout è un modo migliore per distinguere tra ciò che devi vedere al momento. Inoltre, l'uso di sysout è molto più veloce e se esegui molte operazioni di debug ogni secondo conta.
breakline
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.