Como reduzir o System.out.println ()

122

Por favor, conselhos sobre onde posso encontrar a biblioteca para usar a expressão mais curta de System.out.println() e onde devo colocá-la.

Eugene
fonte
2
Você deseja usar isso apenas porque a expressão é mais curta?
Erick Robertson
61
Se você deseja adicionar uma biblioteca ao seu projeto apenas para encurtar uma expressão, suas prioridades estão desordenadas.
Erick Robertson
7
Do que você está fazendo errado, confie em mim.
PeterK
6
Eu sinto que isso precisa da tag code-golf.
Mark Peters
3
Usando System.out é geralmente ruim em um aplicativo bem projetado, por isso as respostas realmente não importa ...
Bananeweizen

Respostas:

310

Bibliotecas de log

Você pode usar as bibliotecas de log em vez de reinventar a roda. Log4j por exemplo, irá fornecer métodos para mensagens diferentes, como info(), warn()eerror() .

Métodos caseiros

ou simplesmente crie um printlnmétodo próprio e chame-o:

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

println("Hello World");

Atalhos do teclado IDE

IntelliJ IDEA e NetBeans:

você digita sout, pressiona TABe digita System.out.println()para você, com o cursor no lugar certo.

Eclipse:

Digite sysoe pressione CTRL+ SPACE.

De outros

Encontre um plug-in "snippets" para seu editor de texto / IDE favorito

Importação estática

import static java.lang.System.out;

out.println("Hello World");

Explore os idiomas da JVM

Scala

println("Hello, World!")

Groovy

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Rinoceronte

print('Hello, World!'); 
bakkal
fonte
18
import static System.out;é uma prática rara, e bastante desnecessária na minha opinião, e assim ver out.printlnpode causar confusão pelo menos inicialmente. A importação estática tem um uso mais idiomático, mas esse caso em particular não é.
polygenelubricants
11
+1 para atalhos do Eclspe e Netbeans. Estou indeciso sobre a importação estática.
David J. Liszewski
4
No Eclipse, você pode alterar o sysoutmodelo em Java> Editor> Modelos . Você pode até mesmo torná-lo mais curto, substituindo sysoutpor somais ou menos :)
BalusC
3
@BalusC idéia melhor - soCTRL + ESPAÇO abre Stack Overflow em uma janela do navegador e você parar de codificação
Michael Mrozek
1
souttambém funciona no IntelliJ IDEA (o NetBeans provavelmente o copiou deles :) De qualquer forma, é bom mencionar que - o tamanho do System.out.println()arquivo fica irrelevante para ele IMHO.
Jonik
27
void p(String l){
System.out.println(l);
}

Mais curto. Vá em frente.

romper
fonte
7
+1, apenas porque é divertido ver o Java ganhar um código de golfe para variar. ;-)
chimeracoder
Na verdade, é direto de "Começando a programação Java: a abordagem orientada a objetos" aqui wrox.com/WileyCDA/WroxTitle/…
uchuugaka
17

Java é uma linguagem detalhada.

Se você tem apenas três dias e isso já o está incomodando, talvez seja melhor você aprender um idioma diferente como o Scala:

scala> println("Hello World")
Hello World

Em um sentido amplo, isso seria qualificado como usar uma "biblioteca" para permitir expressões mais curtas;)

dbyrne
fonte
4
Este é o meu quinto ano em Java, ainda estou a tempo?
Tom
2
Absolutamente! O Scala tem uma curva de aprendizado muito gradual para desenvolvedores de java.
dbyrne
Eu sou viciado em Clojure
Peter
1
Certo, Java é uma linguagem detalhada; fazer a si mesmo perguntas como o OP é uma parte normal de conhecê-lo.
barfuin
6
Eu sou viciado em Java.
ceklock
14

Algumas alternativas interessantes:

OPÇÃO 1

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

OPÇÃO 2

PrintWriter p = new PrintWriter(System.out, true);
p.println("Hello");
Stephen Paul
fonte
9

Para Intellij IDEA, digite soute pressione Tab.

Para Eclipse, digite sysoe pressione Ctrl+ Space.

Max Gabderakhmanov
fonte
2
Sua resposta provavelmente depende de um IDE. Você pode explicar onde exatamente esse atalho funciona. Caso contrário, sua resposta realmente não ajudará ninguém.
localidade padrão
1
@defaultlocale Obrigado. Sim, é verdade. Eu adicionei algumas informações específicas.
Max Gabderakhmanov 26/09/16
7

Use o log4j ou JDK para criar apenas um criador de logs estático na classe e chamá-lo assim:

LOG.info("foo")
Jon Bringhurst
fonte
2

Como Bakkal explicou, para os atalhos de teclado, netbeansvocê pode acessar as ferramentas-> opções-> editor-> modelos de código e adicionar ou editar seus próprios atalhos.

Em Eclipseque está em templates.

dazito
fonte
1

Minha solução para o BlueJ é editar o modelo da nova classe "stdclass.tmpl" em Arquivos de programa (x86) \ BlueJ \ lib \ english \ templates \ newclass e adicionar este método:

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

Ou esta outra versão:

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

Quanto ao Eclipse, estou usando o atalho sugerido syso + <Ctrl> + <Space>:)

carlos_lm
fonte
1

Um ponto menor, talvez, mas:

import static System.out;

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

... gerou um erro de tempo de compilação. Corrigi o erro editando a primeira linha para ler:

import static java.lang.System.out;
CaitlinG
fonte
1
pacote some.useful.methods;

classe pública B {

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

importar estático some.useful.methods.B. *;

classe pública A {

    public static void main (String [] args) {

        p ("Olá!");

    }
}
Denis
fonte
0

No Java 8:

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

Usar System.out.println () é uma prática ruim (use melhor a estrutura de log) -> você não deve ter muitas ocorrências em sua base de código. Usar outro método para encurtar simplesmente não parece uma boa opção.

Marc T
fonte
Eu discordo. Se você já possui um log normal, usar o Sysout é uma maneira melhor de distinguir entre o que você precisa ver no momento. Além disso, o uso do sysout é muito mais rápido e, se você faz muita depuração a cada segundo, conta.
breakline