Cách làm cho System.out.println () ngắn hơn


122

Xin tư vấn về nơi tôi có thể tìm thấy lib để sử dụng biểu thức ngắn hơn System.out.println()và nơi tôi nên đặt lib đó.


2
Bạn muốn sử dụng điều này chỉ vì biểu thức ngắn hơn?
Erick Robertson

61
Nếu bạn định thêm một thư viện vào dự án của mình chỉ để rút ngắn một biểu thức, bạn đã hết ưu tiên.
Erick Robertson

7
Hơn bạn đang làm sai, hãy tin tôi.
PeterK

6
Tôi cảm thấy như điều này cần thẻ golf mã.
Mark Peters

3
Sử dụng System.out nói chung là không tốt trong một ứng dụng được thiết kế tốt, vì vậy câu trả lời không thực sự quan trọng ...
Tuneweizen

Câu trả lời:


310

Thư viện ghi nhật ký

Bạn có thể sử dụng các thư viện ghi nhật ký thay vì phát minh lại bánh xe. Ví dụ, Log4j sẽ cung cấp các phương thức cho các thông báo khác nhau như info(), warn()error().

Phương pháp tự làm

hoặc đơn giản là tạo một printlnphương thức của riêng bạn và gọi nó:

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

println("Hello World");

Phím tắt IDE

IntelliJ IDEA và NetBeans:

bạn gõ soutrồi nhấn TABvà nó gõ System.out.println()cho bạn, với con trỏ ở đúng vị trí.

Nhật thực:

Nhập sysorồi nhấn CTRL+ SPACE.

Khác

Tìm một plugin "đoạn trích" cho trình soạn thảo văn bản / IDE yêu thích của bạn

Nhập tĩnh

import static java.lang.System.out;

out.println("Hello World");

Khám phá các ngôn ngữ JVM

Scala

println("Hello, World!")

Groovy

println "Hello, World!" 

Con trăn

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Tê giác

print('Hello, World!'); 

18
import static System.out;là một thực tế hiếm hoi, và theo tôi là không cần thiết, và do đó việc nhìn thấy out.printlncó thể gây nhầm lẫn ít nhất là ban đầu. Nhập tĩnh có nhiều cách sử dụng thành ngữ hơn, nhưng trường hợp cụ thể này không phải là nó.
đa gen

11
+1 cho các phím tắt Eclspe & Netbeans. Tôi chưa quyết định về việc nhập tĩnh.
David J. Liszewski

4
Trong Eclipse, bạn có thể thay đổi sysoutmẫu trong Java> Trình soạn thảo> Mẫu . Bạn thậm chí có thể làm cho nó ngắn hơn bằng cách thay thế sysoutbằng sohoặc hơn :)
BalusC

3
@BalusC Ý tưởng tốt hơn - soCTRL + SPACE mở Stack Overflow trong cửa sổ trình duyệt và bạn ngừng mã hóa
Michael Mrozek

1
soutcũng hoạt động trong IntelliJ IDEA (NetBeans có thể đã sao chép nó từ họ :) Dù sao, thật tốt khi đề cập đến điều đó - độ dài System.out.println()trở nên không liên quan với nó IMHO.
Jonik

27
void p(String l){
System.out.println(l);
}

Ngắn nhất. Cứ liều thử đi.


7
+1, chỉ vì thật thú vị khi thấy Java giành được một mã golf để thay đổi. ;-)
chimeracoder

Trên thực tế, nó ngay lập tức ra khỏi "Bắt đầu lập trình Java: Cách tiếp cận hướng đối tượng" ở đây wrox.com/WileyCDA/WroxTitle/ Kẻ
uchuugaka

17

Java là một ngôn ngữ dài dòng.

Nếu bạn chỉ mới 3 ngày và điều này đã làm phiền bạn, có lẽ bạn nên học một ngôn ngữ khác như Scala:

scala> println("Hello World")
Hello World

Theo nghĩa lỏng lẻo, điều này sẽ đủ điều kiện là sử dụng "thư viện" để kích hoạt các biểu thức ngắn hơn;)


4
Đây là năm thứ 5 của tôi ở Java, tôi có còn kịp không?
Tom

2
Chắc chắn rồi! Scala có một đường cong học tập rất dần cho các nhà phát triển java.
dbyrne

Tôi nghiện Clojure
Peter

1
Phải, Java là một ngôn ngữ dài dòng; tự đặt câu hỏi như OP là một phần bình thường của việc tìm hiểu nó.
barfuin

6
Tôi nghiện Java.
ceklock

14

Một số lựa chọn thay thế thú vị:

LỰA CHỌN 1

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

LỰA CHỌN 2

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

9

Đối với IDEA Intellij loại soutvà nhấn Tab.

Đối với loại Eclipsesyso và nhấn Ctrl+ Space.


2
Câu trả lời của bạn có thể phụ thuộc vào một IDE. Bạn có thể muốn giải thích chính xác nơi phím tắt này hoạt động. Nếu không, câu trả lời của bạn không thực sự giúp được ai.
miền địa phương mặc định

1
@defaultlocale Cảm ơn. Vâng đúng vậy. Tôi đã thêm một số thông tin cụ thể.
Max Gabderakhmanov

7

Sử dụng ghi nhật ký log4j hoặc JDK để bạn có thể tạo một trình ghi nhật ký tĩnh trong lớp và gọi nó như thế này:

LOG.info("foo")

2

Như Bakkal đã giải thích, đối với các phím tắt, netbeansbạn có thể vào công cụ-> tùy chọn-> trình soạn thảo-> mẫu mã và thêm hoặc chỉnh sửa các phím tắt của riêng bạn.

Trong Eclipseđó là trên các mẫu.


1

Giải pháp của tôi cho BlueJ là chỉnh sửa mẫu Lớp mới "stdgroup.tmpl" trong Tệp chương trình (x86) \ BlueJ \ lib \ english \ samples \ new class và thêm phương thức này:

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

Hoặc phiên bản khác này:

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

Đối với Eclipse tôi đang sử dụng lối tắt được đề xuất syso + <Ctrl> + <Space>:)


1

Một điểm nhỏ có lẽ, nhưng:

import static System.out;

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

... tạo ra một lỗi thời gian biên dịch. Tôi đã sửa lỗi bằng cách chỉnh sửa dòng đầu tiên để đọc:

import static java.lang.System.out;

1
gói một số.us.us.methods;

lớp B {

    công tĩnh void p (Object s) {
        System.out.println (s);
    }
}
gói First.java.lesson;

nhập tĩnh một số.us.us.methods.B. *;

lớp A {

    public static void main (String [] args) {

        p ("Xin chào!");

    }
}

0

Trong Java 8:

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

-1

Sử dụng System.out.println () là cách thực hành tồi (sử dụng khung ghi nhật ký tốt hơn) -> bạn không nên có nhiều lần xuất hiện trong cơ sở mã của mình. Sử dụng một phương pháp khác để rút ngắn nó dường như không phải là một lựa chọn tốt.


Tôi không đồng ý. Nếu bạn đã đăng nhập bình thường tại chỗ rồi, thì sử dụng Sysout là cách tốt hơn để phân biệt giữa những gì bạn cần xem vào lúc này. Ngoài ra, sử dụng sysout nhanh hơn nhiều và nếu bạn thực hiện nhiều thao tác sửa lỗi mỗi giây.
vỡ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.