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()
?
les importations statiques font le tour:
import static Java.lang.System.out;
ou bien importez chaque méthode statique et champ en utilisant
import static Java.lang.System.*;
Addendum de @Steve C: notez que @sfussenegger a dit cela dans un commentaire sur ma réponse.
"L'utilisation d'une telle importation statique de System.out ne convient pas à autre chose qu'un simple code à exécution unique."
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 le fais pas !
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 mauvais style (IMO) car:
Si vous trouvez beaucoup de résultats dans System.out ou System.err, je pense qu'il est préférable de faire la synthèse des flux en attributs, en variables locales ou en 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, comme out est un champ statique à l'intérieur de System, vous pouvez écrire à l'aide d'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 à ce link . En général, vous ne feriez cela que si vous utilisez beaucoup de méthodes statiques d'une classe particulière, comme je l'utilise tout le temps pour les assertions junit et easymock.
out
est un type PrintStream
de variable statique (objet) de la classe System
et println()
est 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 (objet) out
est accessible avec le nom de classe System
qui appelle ensuite la méthode println()
de son type PrintStream
(qui est une classe).
importer simplement:
import static Java.lang.System.*;
vous pouvez le voir aussi dans les sockets ...
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("hello");
Vous devrez créer un objet out first. Plus à ce sujet ici:
// write to stdout
out = System.out;
out.println("Test 1");
out.close();
Ou simplement:
System.out.println("Some text");