6

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);
    }
}
8
  • 7
    And what would that error be? Commented Jun 6, 2010 at 12:00
  • Yeah. What's the error? It looks fine to me. Commented Jun 6, 2010 at 12:09
  • error probably comes if you pass more than one arg Commented Jun 6, 2010 at 12:14
  • 1
    Compiles fine for me, for the record. Commented Jun 6, 2010 at 12:31
  • 1
    Sorry guys. False alarm. (: I am using lejos Java virtual machine. And they do not have String.format(String format, Objects[] args) method implemented. Commented Jun 6, 2010 at 12:43

2 Answers 2

5

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.

Sign up to request clarification or add additional context in comments.

Comments

1

I think this will work:

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

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.