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.


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!'); 

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


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;)


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");

9

Para Intellij IDEA, digite soute pressione Tab.

Para Eclipse, digite sysoe pressione Ctrl+ Space.


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")

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.


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>:)


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;

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á!");

    }
}

0

No Java 8:

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

-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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.