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

J’ai vu du code tel que:

out.println("print something"); 

J’ai essayé d’ import java.lang.System;

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

les importations statiques font l’affaire:

 import static java.lang.System.out; 

ou bien importez chaque méthode statique et chaque champ en utilisant

 import static java.lang.System.*; 

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

“L’utilisation d’une telle importation statique de System.out n’est pas plus simple que du simple code d’exécution.”

Alors, s’il vous plaît, n’imaginez pas qu’il (ou moi) pense que cette solution est une bonne pratique.

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

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

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

  System.out.println(...); 

et pas

  out.println(...); 

Une importation statique de System.out ou System.err est un style (IMO) incorrect car:

  • il brise l’idiome accepté, et
  • Cela rend plus difficile le suivi des impressions de trace indésirables qui ont été ajoutées lors des tests et non supprimées.

Si vous vous retrouvez à produire beaucoup de données dans System.out ou System.err, je pense qu’il est préférable d’abstraire les stream dans des atsortingbuts, des variables locales ou des méthodes. Cela rendra votre application plus réutilisable.

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 de System, vous pouvez écrire une importation statique comme ceci:

 import static java.lang.System.*; class Test { public static void main(Ssortingng[] args) { out.println("print something"); } } 

Jetez un oeil à ce lien . Typiquement, vous ne le feriez que si vous utilisez beaucoup de méthodes statiques d’une classe particulière, comme je l’utilise tout le temps pour les assertions de junit, et easymock.

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

 class PrintStream { public void println(){} //member function ... } class System { public static final PrintStream out; //data member ... } 

C’est pourquoi la variable statique (object) out est accessible avec le nom de classe System qui invoque en outre la méthode println() de son type PrintStream (qui est une classe).

Vous devrez d’abord créer un object. Plus à ce sujet ici:

  // write to stdout out = System.out; out.println("Test 1"); out.close(); 

vous pouvez voir cela aussi dans les sockets …

 PrintWriter out = new PrintWriter(socket.getOutputStream()); out.println("hello"); 

importez simplement:

 import static java.lang.System.*; 

Ou simplement:

 System.out.println("Some text");