如何包装Java String.format()?

发布于 2024-09-04 15:22:39 字数 374 浏览 5 评论 0原文

我想将 String.format() 方法包装在我自己的 Logger 类中。我不知道如何将参数从我的方法传递到 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);
    }
}

I would like to wrap the String.format() method with in my own Logger class. I can't figure a way how to pass arguments from my method to 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);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱你一生 2024-09-11 15:22:39

你的代码有效。可变参数或多或少只是可变参数的语法装箱。

换句话说,以下两条语句实际上是相同的:

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"}) 将导致数组被视为单个对象(在这种情况下会导致抛出运行时错误)。

如果您的代码仍然存在问题,请检查您的示例是否确实与您的代码的工作方式相同。

Your code works. The vararg is more or less simply a syntactic boxing of the vararg.

In other words,the following two statements are actually identical:

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

Your args in your code will always be an Object[], no matter if you have 0, 1, 2 or any other number of arguments.

Note that this is determined at compile time and looks at the static type of the object, so String.format("%s %s", (Object)new Object[] {"Foo", "Bar"}) will cause the array to be treated as a single object (and in this case cause a runtime error to be thrown).

If you still have problems with your code, please check that your example really is identical to how your code works.

人间☆小暴躁 2024-09-11 15:22:39

我认为这会起作用:

打印(字符串.格式(格式,
(对象[])args));

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

I think this will work:

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

Hope it works. I have not tested it.
Good luck

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文