Як зробити System.out.println () коротшим


122

Будь ласка, порада про те, де я можу знайти ліб, щоб використати коротший вираз System.out.println()і де я повинен розмістити цю.


2
Ви хочете використовувати це лише тому, що вираз коротший?
Ерік Робертсон

61
Якщо ви збираєтеся додати бібліотеку до свого проекту просто для скорочення вираження, ви не впорядкували свої пріоритети.
Ерік Робертсон

7
Чим ти робиш це неправильно, довірся мені.
PeterK

6
Я відчуваю, що для цього потрібен тег код-гольф.
Марк Петерс

3
Використання System.out загалом погано в добре розробленому додатку, тому відповіді насправді не мають значення ...
Bananeweizen

Відповіді:


310

Ведення бібліотек

Ви можете використовувати бібліотеки журналів, а не переосмислювати колесо. Log4j , наприклад , буде надавати методи для різних повідомлень , таких як info(), warn()і error().

Домашні методи

або просто зробіть власний printlnметод і зателефонуйте:

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

println("Hello World");

Комбінації клавіш IDE

IntelliJ IDEA та NetBeans:

Ви набираєте, soutпотім натискаєте TAB, і він набирає System.out.println()для вас курсор у потрібному місці.

Затемнення:

Введіть sysoпотім натисніть CTRL+ SPACE.

Інший

Знайдіть плагін "фрагменти" для улюбленого текстового редактора / IDE

Статичний імпорт

import static java.lang.System.out;

out.println("Hello World");

Вивчіть мови JVM

Скала

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Носоріг

print('Hello, World!'); 

18
import static System.out;На мою думку, це рідкісна практика, і зовсім непотрібна, і таким чином бачення out.printlnможе привести в замішання хоча б спочатку. Статичний імпорт має більш ідіоматичне використання, але це конкретний випадок.
полігеномастильні речовини

11
+1 для ярликів Eclspe & Netbeans. Я не визначився щодо статичного імпорту.
Девід Дж. Лішевський

4
У програмі Eclipse ви можете змінити sysoutшаблон на Java> Редактор> Шаблони . Ви можете навіть зробити його коротшим, замінивши sysoutйого soчи так :)
BalusC

3
@BalusC Краща ідея - soCTRL + SPACE відкриває переповнення стека у вікні браузера, і ви припиняєте кодування
Michael Mrozek

1
soutтакож працює в IntelliJ IDEA (NetBeans, ймовірно, скопіював це з них :) Так чи інакше, добре згадати це - довжина System.out.println()стає невідповідною для нього IMHO.
Джонік

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

Найкоротший. Действуй.


7
+1, просто тому, що дивно, що Java виграє гольф коду за зміну, це цікаво. ;-)
химеракодер

На насправді це прямо з «початку програмування на мові Java: Об'єктно-орієнтований підхід» тут wrox.com/WileyCDA/WroxTitle / ...
uchuugaka

17

Java - це багатослівна мова.

Якщо у вас всього 3 дні, і це вже вас турбує, можливо, вам буде краще вивчити іншу мову, як Скала:

scala> println("Hello World")
Hello World

У слабкому сенсі це може бути кваліфіковано як використання "бібліотеки" для включення коротших виразів;)


4
Це мій 5-й рік на Яві, я ще встигаю?
Том

2
Абсолютно! Scala має дуже поступову криву навчання для розробників Java.
dbyrne

Я пристрастився до Clojure
Пітер

1
Правильно, Java - це багатослівна мова; задавати собі питання, як ОП - це нормальна частина ознайомлення з ним.
barfuin

6
Я захоплююся Явою.
ceklock

14

Деякі цікаві альтернативи:

ВАРІАНТ 1

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

ВАРІАНТ 2

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

9

Для типу Intellij IDEA введіть soutта натисніть Tab.

Для Eclipse введіть sysoі натисніть Ctrl+ Space.


2
Ваша відповідь, ймовірно, залежить від IDE. Ви можете пояснити, де саме працює цей ярлик. Інакше ваша відповідь нікому не допомагає.
локальне місце за замовчуванням

1
@defaultlocale Дякую Так, це правда. Я додав певну інформацію.
Макс Габдерахманов

7

Використовуйте журнал log4j або JDK, щоб ви могли просто створити статичний реєстратор у класі та назвати його так:

LOG.info("foo")

2

Як пояснив Бакал, для комбінацій клавіш netbeansможна перейти до інструментів-> опцій-> редактора-> шаблонів коду та додати чи відредагувати власні ярлики.

У Eclipseньому на шаблонах.


1

Моє рішення для BlueJ - відредагувати шаблон нового класу "stdclass.tmpl" у файлах програми (x86) \ BlueJ \ lib \ english \ templates \ newclass та додати цей метод:

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

Або ця інша версія:

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

Що стосується Eclipse, я використовую запропонований ярлик syso + <Ctrl> + <Space>:)


1

Можливий незначний момент, але:

import static System.out;

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

... генерував помилку часу компіляції. Я виправив помилку, відредагувавши перший рядок, щоб прочитати:

import static java.lang.System.out;

1
пакет some.useful.methods;

публічний клас B {

    публічна статична пустота p (Об'єкти) {
        System.out.println (s);
    }
}
пакет first.java.lesson;

імпортувати статичні some.useful.methods.B. *;

публічний клас A {

    public static void main (String [] args) {

        p ("Привіт!");

    }
}


-1

Використання System.out.println () - це погана практика (краще використовувати фреймворк ведення журналу) -> у вашій кодовій базі не повинно виникати багато випадків. Використання іншого методу для простого скорочення не здається хорошим варіантом.


Я б не погодився. Якщо у вас вже є звичайний журнал, тоді використання системи Sysout є кращим способом розрізнити те, що вам потрібно побачити на даний момент. Крім того, використання систематизації набагато швидше, і якщо ви робите багато налагоджень, рахується кожна секунда.
перерва
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.