Perhaps you've seen this before, but it is new to me:
public void doSomethingAmazing(
final String firstArgument,
final String... restOfArguments) {
// Do something amazing with the arguments
} What is the point of firstOne and restOfThem (besides looking a little LISPy)?
Fortunately, the coder had this comment for the method: Change from checking at runtime for one or more arguments to syntatically enforcing a mandatory first argument and optional list of remaining arguments. A quick check showed the previous version as:
public void doSomethingAmazing(
final String... arguments) {
// Do something amazing with the arguments
} Aha, how clever! Whereas before the call:
doSomethingAmazing();
compiled but at runtime threw an IllegalArgumentException for empty arguments[], now the same call is a syntax error caught by the compiler. The correct new call is:
doSomethingAmazing("wonderful"); I like it.
UPDATE: Paul Holser points out to me that he uses this trick in the excellent JAggregate. As I reviewed that code within the past several months, I now realize that it is most likely I had already seen this trick there first. Paul is a clever guy, and deserves the credit.
No comments:
Post a Comment