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()
?
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.
PrintStream out = System.out;
out.println( "hello" );
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.
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.
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).
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();
Vous pouvez le voir également dans les sockets ...
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("hello");
Il suffit d'importer:
import static java.lang.System.*;
Ou simplement:
System.out.println("Some text");