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.


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

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


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;


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

9

Para Intellij IDEA escriba souty presione Tab.

Para Eclipse, escriba sysoy presione Ctrl+ Space.


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

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.


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


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;

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

    }
}

0

En Java 8:

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

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.