Java dehors.println() comment est-ce possible?


J'ai vu du code tel que:

out.println("print something");

J'ai essayé import java.lang.System;

Mais ça ne marche pas. Comment utilisez-vous out.println() ?

Author: tangens, 2010-03-24

9 answers

Les importations statiques font l'affaire:

import static java.lang.System.out;

Ou alternativement importer chaque méthode statique et champ en utilisant

import static java.lang.System.*;

Addendum par @Steve C: notez que @sfussenegger a dit cela dans un commentaire sur ma réponse.

"En utilisant une telle importation statique du système.out n'est pas adapté pour plus d'un simple code d'exécution unique."

Alors n'imaginez pas qu'il (ou moi) pense que cette solution est une Bonne Pratique.

 82
Author: sfussenegger, 2012-09-26 07:43:50
PrintStream out = System.out;
out.println( "hello" );
 26
Author: tangens, 2010-03-24 05:57:24

La réponse de@sfussenegger explique comment faire fonctionner cela. Mais je dirais ne le fais pas!

Les programmeurs Java expérimentés utilisent et s'attendent à voir

        System.out.println(...);

Et non

        out.println(...);

Une importation statique du système.ou de Système.err est (IMO) mauvais style parce que:

  • il casse l'idiome accepté, et
  • il est plus difficile de traquer les empreintes indésirables qui ont été ajoutées pendant les tests et non supprimées.

Si vous vous trouvez à faire beaucoup de sortie au système.ou de Système.err, je pense qu'il est préférable d'abstraire les flux en attributs, variables locales ou méthodes. Cela rendra votre application plus réutilisable.

 14
Author: Stephen C, 2010-03-23 23:26:10

Eh bien, vous utiliseriez généralement

System.out.println("print something");

Qui ne nécessite aucune importation. Cependant, puisque out est un champ statique à l'intérieur du système, vous pouvez écrire utiliser une importation statique comme ceci:

import static java.lang.System.*;

class Test {
    public static void main(String[] args) {
        out.println("print something");
    }
}

Jetez un oeil à cette lien. En général, vous ne faites cela que si vous utilisez beaucoup de méthodes statiques d'une classe particulière, comme je l'utilise tout le temps pour junit affirme, et easymock.

 5
Author: Casey, 2010-03-23 23:09:00

out est un PrintStream type de variable statique(objet) de System classe et println() est la fonction de la PrintStream classe.

class PrintStream
{
    public void println(){}    //member function
    ...
}

class System
{
    public static final PrintStream out;   //data member
    ...
}

C'est pourquoi la variable statique(objet) out est accessible avec le nom de la classe System, qui invoque également la méthode println() de type PrintStream (qui est une classe).

 3
Author: Dushyant Thakur, 2013-01-30 17:46:32

Vous devrez d'abord créer un objet out. Plus à ce sujet ici:

    // write to stdout
    out = System.out;
    out.println("Test 1");
    out.close();
 1
Author: Oskar Kjellin, 2010-03-23 23:12:16

Vous pouvez le voir également dans les sockets ...

PrintWriter out = new PrintWriter(socket.getOutputStream());

out.println("hello");
 1
Author: Exorcismus, 2012-08-27 13:58:56

Il suffit d'importer:

import static java.lang.System.*;
 1
Author: EnggForum, 2017-01-26 07:58:19

Ou simplement:

System.out.println("Some text");
 0
Author: Chris Knight, 2010-03-23 22:38:59