2010-06-06 16 views
6

Hola a todos, me gustaría ajustar el método String.format() en mi propia clase Logger. No puedo encontrar la manera de pasar argumentos de mi método a String.format().Cómo ajustar 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

¿Y cuál sería ese error? –

+0

Sí. ¿Cuál es el error? Me parece bien. –

+0

error probablemente se produce si pasa más de un arg – eugeneK

Respuesta

4

Tu código funciona. El vararg es más o menos simplemente un boxeo sintáctico del vararg.

En otras palabras, las dos afirmaciones siguientes son en realidad idénticos:

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

Su args en el código se siempre ser un Object[], no importa si tiene 0, 1, 2 o cualquier otro número de argumentos.

Nota que esta se determina en tiempo de compilación y mira el tipo estático del objeto, por lo String.format("%s %s", (Object)new Object[] {"Foo", "Bar"}) hará que la matriz que va a tratarse como un único objeto (y en este caso causa un error de ejecución a ser lanzado) .

Si todavía tiene problemas con su código, verifique que su ejemplo sea realmente idéntico a cómo funciona su código.

1

creo que esto va a funcionar:

de impresión (String.Format (formato, ([]) objeto de argumento));

Espero que funcione. No lo he probado. Buena suerte