43 votes

Pourquoi ne puis-je pas importer le fichier statique java.lang.System.out.println ?

Il semble étrange que je ne puisse pas importer static java.lang.System.out.println, alors que je peux importer static java.lang.Math.abs. Y a-t-il une raison à cela ou est-ce que je fais quelque chose de vraiment stupide que je ne vois pas pour le moment ? (J'utilise Eclipse).

55voto

StriplingWarrior Points 56276

Math est une classe, sur laquelle abs est une méthode statique. System.out est un champ statique plutôt qu'une classe. Ainsi, son println n'est pas réellement une méthode statique, mais une méthode d'instance sur un champ statique.

21voto

ratchet freak Points 22412

Parce que java.lang.System.out est un objet statique (un PrintStream) sur lequel vous appelez println .

Bien que dans eclipse vous pouvez taper sysout puis appuyez sur ctrl - space pour qu'il soit étendu à System.out.println();

11voto

Peter Lawrey Points 229686

Les méthodes non statiques ne peuvent pas être importées de cette manière.

Cependant, vous pouvez le faire :

public static void println() {
    System.out.println();
}

// elsewhere
println();     // can be inlined

9voto

ceving Points 3990

Peter La réponse de l'auteur semble être la meilleure solution. Mais sans arguments, les cas d'utilisation sont un peu limités.

static<T> void println(T arg) { System.out.println(arg); }

4voto

Leon Points 848

Combiner printf et println

public static void println(Object format, Object... args) {
    System.out.printf(format.toString(), args);
    System.out.println();
}

@Test
public void testPrintln(){
    println(100);
    println("abc");
    println(new Date());
    println("%s=%d","abc",100);
}

sortie

100
abc
Wed Nov 01 22:24:20 CST 2017
abc=100

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X