Как перенести Java String.format ()?

Я хотел бы перенести 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);
    }
}
6
задан Donald Duck 19 April 2019 в 15:59
поделиться

2 ответа

Ваш код работает. 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»}) приведет к тому, что массив будет обрабатываться как отдельный объект (и в этом случае вызовет ошибку времени выполнения).

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

4
ответ дан 17 December 2019 в 04:42
поделиться

Думаю, это сработает:

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

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

1
ответ дан 17 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: