Bagaimana membuat System.out.println () lebih pendek


122

Mohon saran di mana saya bisa menemukan lib untuk menggunakan ekspresi yang lebih pendek System.out.println()dan di mana saya harus meletakkan lib itu.


2
Anda ingin menggunakan ini hanya karena ekspresinya lebih pendek?
Erick Robertson

61
Jika Anda akan menambahkan perpustakaan ke proyek Anda hanya untuk mempersingkat ekspresi, prioritas Anda sudah rusak.
Erick Robertson

7
Daripada Anda salah melakukannya, percayalah.
PeterK

6
Saya merasa ini membutuhkan tag kode-golf.
Mark Peters

3
Menggunakan System.out umumnya buruk dalam aplikasi yang dirancang dengan baik, jadi jawabannya tidak terlalu penting ...
Bananeweizen

Jawaban:


310

Perpustakaan logging

Anda dapat menggunakan perpustakaan logging alih-alih menemukan kembali roda. Log4j misalnya akan menyediakan metode untuk pesan yang berbeda seperti info(), warn()dan error().

Metode buatan sendiri

atau cukup buat printlnmetode Anda sendiri dan sebut saja:

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

println("Hello World");

Pintasan keyboard IDE

IntelliJ IDEA dan NetBeans:

Anda mengetik soutlalu tekan TAB, dan mengetik System.out.println()untuk Anda, dengan kursor di tempat yang tepat.

Gerhana:

Ketik sysolalu tekan CTRL+ SPACE.

Lain

Temukan plugin "cuplikan" untuk editor teks / IDE favorit Anda

Impor Statis

import static java.lang.System.out;

out.println("Hello World");

Jelajahi bahasa JVM

Scala

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Badak

print('Hello, World!'); 

18
import static System.out;adalah praktik yang jarang, dan menurut saya sangat tidak perlu, dan dengan demikian melihat out.printlndapat menyebabkan kebingungan setidaknya pada awalnya. Impor statis memiliki penggunaan yang lebih idiomatik, tetapi kasus khusus ini bukan.
poligenelubricants

11
1 untuk pintasan Eclspe & Netbeans. Saya ragu-ragu tentang impor statis.
David J. Liszewski

4
Di Eclipse Anda dapat mengubah sysouttemplate di Java> Editor> Template . Anda bahkan dapat membuatnya lebih pendek dengan menggantinya sysoutdengan soatau lebih :)
BalusC

3
@BalusC Ide yang lebih baik - soCTRL + SPACE membuka Stack Overflow di jendela browser dan Anda menghentikan coding
Michael Mrozek

1
soutjuga bekerja di IntelliJ IDEA (NetBeans mungkin menyalinnya dari mereka :) Pokoknya, bagus untuk menyebutkan bahwa - panjang System.out.println()menjadi tidak relevan dengan itu IMHO.
Jonik


17

Java adalah bahasa yang bertele-tele.

Jika Anda baru masuk 3 hari, dan ini sudah mengganggu Anda, mungkin lebih baik Anda mempelajari bahasa lain seperti Scala:

scala> println("Hello World")
Hello World

Dalam arti yang longgar, ini akan memenuhi syarat sebagai menggunakan "perpustakaan" untuk mengaktifkan ekspresi yang lebih pendek;)


4
Ini tahun ke-5 saya di Jawa, apakah saya masih tepat waktu?
Tom

2
Benar! Scala memiliki kurva pembelajaran yang sangat bertahap untuk pengembang java.
dbyrne

Saya kecanduan Clojure
Peter

1
Benar, Java adalah bahasa verbose; bertanya pada diri sendiri pertanyaan seperti OP adalah bagian normal untuk mengetahuinya.
barfuin

6
Saya kecanduan Java.
ceklock

14

Beberapa alternatif menarik:

PILIHAN 1

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

PILIHAN 2

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

9

Untuk jenis Intellij IDEAsout dan tekan Tab.

Untuk tipe Eclipsesyso dan tekan Ctrl+ Space.


2
Jawaban Anda mungkin bergantung pada IDE. Anda mungkin ingin menjelaskan di mana tepatnya pintasan ini bekerja. Jika tidak, jawaban Anda tidak benar-benar membantu siapa pun.
default lokal

1
@defaultlocale Terima kasih. Ya itu benar. Saya menambahkan beberapa info khusus.
Max Gabderakhmanov

7

Gunakan log4j atau JDK logging sehingga Anda bisa membuat logger statis di kelas dan memanggilnya seperti ini:

LOG.info("foo")

2

Seperti yang dijelaskan Bakkal, untuk pintasan keyboard, netbeansAnda dapat membuka alat-> opsi-> editor-> templat kode dan menambah atau mengedit pintasan Anda sendiri.

Di Eclipsedalamnya ada di template.


1

Solusi saya untuk BlueJ adalah mengedit template Kelas Baru "stdclass.tmpl" di Program Files (x86) \ BlueJ \ lib \ english \ templates \ newclass dan menambahkan metode ini:

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

Atau versi lain ini:

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

Sedangkan untuk Eclipse, saya menggunakan pintasan yang disarankan syso + <Ctrl> + <Space>:)


1

Mungkin hal kecil, tapi:

import static System.out;

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

... menghasilkan kesalahan waktu kompilasi. Saya mengoreksi kesalahan dengan mengedit baris pertama menjadi:

import static java.lang.System.out;

1
paket some.useful.methods;

kelas publik B {

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

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

kelas publik A {

    public static void main (String [] args) {

        p ("Halo!");

    }
}

0

Di Jawa 8:

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

-1

Menggunakan System.out.println () adalah praktik yang buruk (lebih baik gunakan kerangka kerja logging) -> Anda seharusnya tidak memiliki banyak kejadian di basis kode Anda. Menggunakan metode lain untuk mempersingkatnya sepertinya bukan pilihan yang baik.


Saya tidak setuju. Jika Anda sudah memiliki logging normal, maka menggunakan Sysout adalah cara yang lebih baik untuk membedakan antara apa yang perlu Anda lihat saat ini. Selain itu, menggunakan sysout jauh lebih cepat, dan jika Anda melakukan banyak debugging setiap detik akan berarti.
breakline
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.