如何包装Java String.format()?

时间:2010-06-06 11:56:52

标签: java string format wrapper

我想在我自己的Logger类中包装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);
    }
}

2 个答案:

答案 0 :(得分: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 :(得分:1)

我认为这会奏效:

  

打印(的String.format(格式,   (对象[])参数));

希望它有效。我没有测试过。 祝你好运