Cómo hacer que System.out.println () sea más corto

122

Por favor, consejos sobre dónde puedo encontrar la lib para usar la expresión más corta de System.out.println()y dónde debo colocar esa lib.

Eugene
fuente
2
¿Desea usar esto solo porque la expresión es más corta?
Erick Robertson
61
Si va a agregar una biblioteca a su proyecto solo para acortar una expresión, tiene sus prioridades desordenadas.
Erick Robertson
77
De lo que estás haciendo mal, confía en mí.
PeterK
66
Siento que esto necesita la etiqueta code-golf.
Mark Peters el
3
Usar System.out generalmente es malo en una aplicación bien diseñada, por lo que las respuestas realmente no importan ...
Bananeweizen

Respuestas:

310

Bibliotecas de registro

Puede usar bibliotecas de registro en lugar de reinventar la rueda. Log4j, por ejemplo, proporcionará métodos para diferentes mensajes como info(), warn()y error().

Métodos caseros

o simplemente crea un printlnmétodo propio y llámalo:

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

println("Hello World");

Atajos de teclado IDE

IntelliJ IDEA y NetBeans:

escribe y soutluego presiona TAB, y escribe System.out.println()por usted, con el cursor en el lugar correcto.

Eclipse:

Escriba y sysoluego presione CTRL+ SPACE.

Otro

Encuentre un complemento de "fragmentos" para su editor de texto / IDE favorito

Importación Estática

import static java.lang.System.out;

out.println("Hello World");

Explore los idiomas JVM

Scala

println("Hello, World!")

Maravilloso

println "Hello, World!" 

Jython

print "Hello, World!" 

JRuby

puts "Hello, World!" 

Clojure

(println "Hello, World!")

Rinoceronte

print('Hello, World!'); 
bakkal
fuente
18
import static System.out;Es una práctica rara, y bastante innecesaria en mi opinión, y por lo tanto ver out.printlnpuede causar confusión al menos inicialmente. La importación estática tiene un uso más idiomático, pero este caso particular no lo es.
polygenelubricants
11
+1 para los atajos de Eclspe y Netbeans. Estoy indeciso sobre la importación estática.
David J. Liszewski
44
En Eclipse puede cambiar la sysoutplantilla en Java> Editor> Plantillas . Incluso se puede hacer que sea más corto mediante la sustitución sysoutde somás o menos :)
BalusC
3
@BalusC Mejor idea: soCTRL + SPACE abre Stack Overflow en una ventana del navegador y dejas de codificar
Michael Mrozek
1
souttambién funciona en IntelliJ IDEA (NetBeans probablemente lo copió de ellos :) De todos modos, es bueno mencionar que, la longitud de se System.out.println()vuelve irrelevante en mi humilde opinión.
Jonik
27
void p(String l){
System.out.println(l);
}

Más corto Ve a por ello.

rup
fuente
77
+1, solo porque es divertido ver a Java ganar un código de golf para variar. ;-)
chimeracoder
En realidad es directamente de "Programación Java Inicial: El Enfoque Orientado a Objetos" aquí wrox.com/WileyCDA/WroxTitle/…
uchuugaka
17

Java es un lenguaje detallado.

Si solo llevas 3 días y esto ya te está molestando, quizás sea mejor que aprendas un idioma diferente como Scala:

scala> println("Hello World")
Hello World

En un sentido laxo, esto calificaría como usar una "biblioteca" para habilitar expresiones más cortas;

dbyrne
fuente
44
Este es mi quinto año en Java, ¿todavía estoy a tiempo?
Tom
2
¡Absolutamente! Scala tiene una curva de aprendizaje muy gradual para los desarrolladores de Java.
dbyrne
Soy adicto a Clojure
Peter
1
Correcto, Java es un lenguaje detallado; hacerse preguntas como el OP es una parte normal de conocerlo.
barfuin
66
Soy adicto a Java.
ceklock
14

Algunas alternativas interesantes:

OPCIÓN 1

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

OPCION 2

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

Para Intellij IDEA escriba souty presione Tab.

Para Eclipse, escriba sysoy presione Ctrl+ Space.

Max Gabderakhmanov
fuente
2
Su respuesta probablemente depende de un IDE. Es posible que desee explicar exactamente dónde funciona este acceso directo. De lo contrario, su respuesta realmente no ayuda a nadie.
configuración regional predeterminada
1
@defaultlocale Gracias. Sí, es verdad. Agregué información específica.
Max Gabderakhmanov
7

Use el registro log4j o JDK para que pueda crear un registrador estático en la clase y llamarlo así:

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

Como explicó Bakkal, para los atajos de teclado, netbeanspuede ir a herramientas-> opciones-> editor-> plantillas de código y agregar o editar sus propios atajos.

En Eclipseestá en plantillas.

dazito
fuente
1

Mi solución para BlueJ es editar la plantilla de Nueva clase "stdclass.tmpl" en Archivos de programa (x86) \ BlueJ \ lib \ english \ templates \ newclass y agregar este método:

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

O esta otra versión:

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

En cuanto a Eclipse, estoy usando el acceso directo sugerido syso + <Ctrl> + <Space>:)

carlos_lm
fuente
1

Un punto menor quizás, pero:

import static System.out;

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

... generó un error de tiempo de compilación. Corregí el error editando la primera línea para leer:

import static java.lang.System.out;
CaitlinG
fuente
1
empaquetar algunos métodos.utilizados;

clase pública B {

    público estático vacío p (Objeto s) {
        System.out.println (s);
    }
}
paquete first.java.lesson;

import static.omeful.methods.B. *;

clase pública A {

    public static void main (String [] args) {

        p ("¡Hola!");

    }
}
Denis
fuente
0

En Java 8:

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

Usar System.out.println () es una mala práctica (mejor usar el marco de registro) -> no deberías tener muchas ocurrencias en tu base de código. Usar otro método para acortarlo simplemente no parece una buena opción.

Marc T
fuente
No estoy de acuerdo. Si ya tiene un inicio de sesión normal, entonces usar Sysout es una mejor manera de distinguir entre lo que necesita ver en este momento. Además, el uso de sysout es mucho más rápido, y si realiza mucha depuración cada segundo cuenta.
corte el