2010-06-06 9 views
6

Hey tout le monde, je voudrais envelopper la méthode String.format() avec dans ma propre classe Logger. Je n'arrive pas à comprendre comment passer les arguments de ma méthode à String.format().Comment wrapper Java String.format()?

public class Logger 
{ 
    public static void format(String format, Object... args) 
    { 
     print(String.format(format, args)); // <-- this gives an error obviously. 
    } 

    public static void print(String s) 
    { 
     System.out.println(s); 
    } 
} 
+7

Et quelle serait cette erreur? –

+0

Oui. Quelle est l'erreur? ça à l'air bien pour moi. –

+0

erreur vient probablement si vous passez plus d'un argument – eugeneK

Répondre

4

Votre code fonctionne. Le vararg est plus ou moins une boxe syntaxique du vararg.

En d'autres termes, les deux déclarations suivantes sont en fait identiques:

String.format("%s %s", "Foo", "Bar") 
String.format("%s %s", new Object[] {"Foo", "Bar"}) 

Votre args dans votre code toujours être un Object[], peu importe si vous avez 0, 1, 2 ou tout autre numéro d'arguments.

Notez que ceci est déterminé à moment de la compilation et regarde le type statique de l'objet, de sorte String.format("%s %s", (Object)new Object[] {"Foo", "Bar"}) provoquera le tableau à traiter comme un objet unique (et dans ce cas provoque une erreur d'exécution d'être jeté) .

Si vous avez toujours des problèmes avec votre code, vérifiez que votre exemple est vraiment identique au fonctionnement de votre code.

1

Je pense que cela va fonctionner:

impression (String.format (format, (Object []) args));

Espérons que cela fonctionne. Je ne l'ai pas testé. Bonne chance