Я хотел бы перенести String.format () метод с в моем собственном классе Регистратора. Я не могу изобразить путь, как передать аргументы от моего метода до 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);
}
}
Ваш код работает. Vararg - это более или менее просто синтаксическая упаковка vararg.
Другими словами, следующие два оператора фактически идентичны:
String.format("%s %s", "Foo", "Bar")
String.format("%s %s", new Object[] {"Foo", "Bar"})
Ваши аргументы
в вашем коде всегда будут объектом []
, нет имеет значение, есть ли у вас 0, 1, 2 или любое другое количество аргументов.
Обратите внимание, что это определяется во время компиляции и учитывает статический тип объекта, поэтому String.format ("% s% s", (Object) new Object [] { «Foo», «Bar»})
приведет к тому, что массив будет обрабатываться как отдельный объект (и в этом случае вызовет ошибку времени выполнения).
Если у вас все еще есть проблемы с кодом, убедитесь, что ваш пример действительно идентичен тому, как работает ваш код.
Думаю, это сработает:
print (String.format (format, (Object []) args));
Надеюсь, это сработает. Я не тестировал. Удачи