2010-06-06 13 views
6

Ciao a tutti, vorrei inserire il metodo String.format() nella mia stessa classe Logger. Non riesco a capire come passare argomenti dal mio metodo a String.format().Come avvolgere 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

E quale sarebbe l'errore? –

+0

Sì. Qual è l'errore? Mi sta bene. L'errore –

+0

arriva probabilmente se si supera più di un argomento – eugeneK

risposta

4

Il codice funziona. Il vararg è più o meno semplicemente un inscatolamento sintattico del vararg.

In altre parole, le seguenti due affermazioni sono in realtà identici:

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

tuo args nel codice sarà sempre essere un Object[], non importa se si dispone di 0, 1, 2 o qualsiasi altro numero di argomenti.

noti che questo è determinato in fase di compilazione e guarda il tipo statico dell'oggetto, così String.format("%s %s", (Object)new Object[] {"Foo", "Bar"}) causerà la matrice per essere trattato come un singolo oggetto (e in questo caso causare un errore di runtime da buttare) .

Se hai ancora problemi con il tuo codice, controlla che il tuo esempio sia realmente identico a come funziona il tuo codice.

1

penso che questo funzionerà:

stampa (String.Format (formato, ([]) args Object));

Spero che funzioni. Non l'ho provato Buona fortuna