Jak skrócić System.out.println ()


122

Proszę o poradę, gdzie mogę znaleźć bibliotekę, aby użyć krótszego wyrażenia System.out.println()i gdzie ją umieścić.


2
Chcesz tego użyć tylko dlatego, że wyrażenie jest krótsze?
Erick Robertson

61
Jeśli zamierzasz dodać bibliotekę do projektu tylko po to, aby skrócić wyrażenie, Twoje priorytety są nieuporządkowane.
Erick Robertson

7
Niż robisz to źle, zaufaj mi.
PeterK

6
Wydaje mi się, że do tego potrzebny jest tag code-golf.
Mark Peters

3
Używanie System.out jest ogólnie złe w dobrze zaprojektowanej aplikacji, więc odpowiedzi tak naprawdę nie mają znaczenia ...
Bananeweizen

Odpowiedzi:


310

Biblioteki rejestrujące

Możesz użyć bibliotek rejestrowania zamiast wymyślać koło na nowo. Log4j na przykład zapewni metod dla różnych wiadomości, takich jak info(), warn()i error().

Metody domowe

lub po prostu stwórz własną printlnmetodę i nazwij ją:

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

println("Hello World");

Skróty klawiaturowe IDE

IntelliJ IDEA i NetBeans:

Podczas wpisywania soutnastępnie naciśnij przycisk TAB, a typy System.out.println()dla Ciebie, za pomocą kursora w odpowiednim miejscu.

Zaćmienie:

Wpisz, sysoa następnie naciśnij CTRL+ SPACE.

Inny

Znajdź wtyczkę „snippets” dla swojego ulubionego edytora tekstu / IDE

Import statyczny

import static java.lang.System.out;

out.println("Hello World");

Poznaj języki JVM

Scala

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Nosorożec

print('Hello, World!'); 

18
import static System.out;to rzadka praktyka i moim zdaniem zupełnie niepotrzebna, a zatem widzenie out.printlnmoże przynajmniej początkowo wywołać zamieszanie. Import statyczny ma bardziej idiomatyczne zastosowanie, ale w tym konkretnym przypadku tak nie jest.
polygenelubricants

11
+1 dla skrótów Eclspe i Netbeans. Jestem niezdecydowany co do importu statycznego.
David J. Liszewski

4
W Eclipse możesz zmienić sysoutszablon w Java> Editor> Templates . Możesz nawet skrócić go, zastępując sysoutgo solub tak :)
BalusC

3
@BalusC Lepszy pomysł - soCTRL + SPACJA otwiera przepełnienie stosu w oknie przeglądarki i przestajesz kodować
Michael Mrozek

1
soutdziała też w IntelliJ IDEA (NetBeans chyba go z nich skopiował :) Zresztą, dobrze o tym wspomnieć - długość System.out.println()IMHO staje się przy tym nieistotna.
Jonik,


17

Java to język rozwlekły.

Jeśli masz tylko 3 dni, a to już ci przeszkadza, może lepiej byłoby uczyć się innego języka, takiego jak Scala:

scala> println("Hello World")
Hello World

W pewnym sensie kwalifikowałoby się to jako użycie „biblioteki”, aby umożliwić krótsze wyrażenia;)


4
To mój piąty rok w Javie, czy wciąż mam czas?
Tom

2
Absolutnie! Scala ma bardzo stopniową krzywą uczenia się dla programistów Java.
dbyrne

Jestem uzależniony od Clojure
Peter

1
Tak, Java to język rozwlekły; zadawanie sobie pytań, takich jak PO, jest normalną częścią poznawania go.
barfuin

6
Jestem uzależniony od Javy.
ceklock

14

Kilka interesujących alternatyw:

OPCJA 1

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

OPCJA 2

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

9

W przypadku Intellij IDEA wpisz souti naciśnij Tab.

W przypadku Eclipse wpisz sysoi naciśnij Ctrl+ Space.


2
Twoja odpowiedź prawdopodobnie zależy od IDE. Możesz chcieć wyjaśnić, gdzie dokładnie działa ten skrót. W przeciwnym razie twoja odpowiedź nikomu nie pomoże.
domyślne ustawienie regionalne

1
@defaultlocale Thanks. Tak, to prawda. Dodałem kilka szczegółowych informacji.
Max Gabderakhmanov

7

Użyj rejestrowania log4j lub JDK, aby po prostu utworzyć statyczny rejestrator w klasie i wywołać go w ten sposób:

LOG.info("foo")

2

Jak wyjaśnił Bakkal, dla skrótów klawiaturowych w programie netbeansmożesz przejść do narzędzia-> opcje-> edytor-> szablony kodu i dodać lub edytować własne skróty.

W Eclipsetym na szablonach.


1

Moim rozwiązaniem dla BlueJ jest edycja szablonu nowej klasy „stdclass.tmpl” w Program Files (x86) \ BlueJ \ lib \ english \ templates \ newclass i dodanie tej metody:

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

Lub ta inna wersja:

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

Jeśli chodzi o Eclipse, używam sugerowanego skrótu syso + <Ctrl> + <Space>:)


1

Być może drobna uwaga, ale:

import static System.out;

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

... wygenerował błąd czasu kompilacji. Poprawiłem błąd, edytując pierwszą linijkę, aby przeczytać:

import static java.lang.System.out;

1
pakiet some.useful.methods;

klasa publiczna B {

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

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

klasa publiczna A {

    public static void main (String [] args) {

        p („Cześć!”);

    }
}

0

W Javie 8:

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

-1

Używanie System.out.println () jest złą praktyką (lepiej używaj frameworka rejestrowania) -> nie powinieneś mieć zbyt wielu wystąpień w swoim kodzie. Użycie innej metody prostego skrócenia nie wydaje się dobrym rozwiązaniem.


Nie zgodziłbym się. Jeśli masz już normalne logowanie, skorzystanie z Sysout jest lepszym sposobem na rozróżnienie tego, co chcesz zobaczyć w danej chwili. Ponadto korzystanie z sysout jest znacznie szybsze, a jeśli wykonujesz dużo debugowania, liczy się każda sekunda.
breakline
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.