Как сделать System.out.println () короче

122

Пожалуйста, посоветуйте, где я могу найти библиотеку, чтобы использовать более короткое выражение, System.out.println()и где мне разместить эту библиотеку.

Евгений
источник
2
Вы хотите использовать это только потому, что выражение короче?
Эрик Робертсон,
61
Если вы собираетесь добавить библиотеку в свой проект, чтобы сократить выражение, ваши приоритеты не в порядке.
Эрик Робертсон
7
Чем вы делаете это неправильно, поверьте мне.
PeterK
6
Я чувствую, что для этого нужен тег code-golf.
Марк Петерс
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

Scala

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

носорог

print('Hello, World!'); 
Bakkal
источник
18
import static System.out;это редкая практика и, на мой взгляд, совершенно ненужная, поэтому зрение out.printlnможет вызвать путаницу, по крайней мере, на начальном этапе. Статический импорт имеет более идиоматическое использование, но это не конкретный случай.
polygenelubricants
11
+1 для ярлыков Eclspe и Netbeans. Я не определился со статическим импортом.
David J. Liszewski
4
В Eclipse вы можете изменить sysoutшаблон в Java> Editor> Templates . Вы можете даже сделать его более короче, заменив sysoutна soили так :)
BalusC
3
@BalusC Лучшая идея - soCTRL + SPACE открывает переполнение стека в окне браузера, и вы перестаете кодировать
Майкл Мрозек
1
soutтакже работает в IntelliJ IDEA (NetBeans, вероятно, скопировал его с них :) В любом случае, стоит упомянуть, что длина System.out.println()становится неактуальной для него ИМХО.
Jonik
27
void p(String l){
System.out.println(l);
}

Кратчайший. Действуй.

RUP
источник
7
+1, просто потому, что забавно видеть, как Java выигрывает гольф-код для разнообразия. ;-)
chimeracoder
На самом деле это прямо из статьи «Начало программирования на Java: объектно-ориентированный подход» здесь wrox.com/WileyCDA/WroxTitle/…
uchuugaka
17

Java - многословный язык.

Если у вас всего 3 дня, и это вас уже беспокоит, возможно, вам лучше выучить другой язык, например Scala:

scala> println("Hello World")
Hello World

В широком смысле это можно было бы квалифицировать как использование «библиотеки» для включения более коротких выражений;)

dbyrne
источник
4
Я уже 5 лет на Java, успеваю ли я?
Tom
2
Абсолютно! У Scala очень постепенное обучение для разработчиков Java.
dbyrne
Я пристрастился к Clojure
Питер
1
Верно, Java - многословный язык; Задавать себе вопросы вроде OP - нормальная часть знакомства с ним.
barfuin
6
Я пристрастился к Java.
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нем по шаблонам.

dazito
источник
1

Мое решение для BlueJ - отредактировать шаблон нового класса "stdclass.tmpl" в Program Files (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>:)

carlos_lm
источник
1

Возможно, мелочь, но:

import static System.out;

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

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

import static java.lang.System.out;
CaitlinG
источник
1
пакет some.useful.methods;

public class B {

    public static void p (Object s) {
        System.out.println (ы);
    }
}
пакет first.java.lesson;

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

public class A {

    public static void main (String [] args) {

        р ( "Hello!");

    }
}
Денис
источник
0

В Java 8:

    List<String> players = new ArrayList<>();
     players.forEach(System.out::println);
Abhilash
источник
-1

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

Марк Т
источник
Я не согласен. Если у вас уже есть нормальный вход в систему, то использование Sysout - лучший способ различать то, что вам нужно видеть в данный момент. Кроме того, использование sysout происходит намного быстрее, и если вы много отлаживаете, каждая секунда на счету.
breakline