2010-06-06 2 views
6

Привет всем, я хотел бы обернуть метод String.format() в моем собственном классе Logger. Я не могу понять способ передачи аргументов из моего метода в String.format().Как обернуть 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

И что это за ошибка? –

+0

Да. Какая ошибка? Мне это хорошо. –

+0

ошибка, вероятно, произойдет, если вы пройдете более одного аргумента – eugeneK

ответ

4

Ваш код работает. Vararg более или менее просто синтаксический бокс vararg.

Другими словами, следующие два утверждения фактически идентичны:

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

Ваш args в вашем коде будет всегда быть Object[], независимо от того, если у вас есть 0, 1, 2 или любое другое число аргументов.

Обратите внимание, что это определяется в время компиляции и смотрит на статическом типе объекта, так что String.format("%s %s", (Object)new Object[] {"Foo", "Bar"}) заставит массив, который будет рассматриваться как единый объект (и в этом случае вызвать ошибки во время выполнения, чтобы быть выброшены) ,

Если у вас все еще есть проблемы с кодом, убедитесь, что ваш пример действительно идентичен тому, как работает ваш код.

1

Я думаю, что это будет работать:

печати (string.Format (формат, (Object []) арг));

Надеюсь, он сработает. Я его не тестировал. Удача

Смежные вопросы