Commonly overlooked feature in Java 5 - varargs

Today I’ll comment on a commonly overlooked feature now available in Java (since Java 5.0) called “varargs”.

How many times have you done this?

[sourcecode language=“jscript”]

public ConstructorOne(String personFullName){ // Does something }

//and later on added another constructor that took another parameter

public ConstructorOne(String personFirstName, String personLastName){ // Now breaks down the name to pass along two strings instead of one. }

// and so on…

[/sourcecode]

Well, not anymore. You now have a new arsenal in your toolkit. In comes, “varargs” - stands for variable arguments.

You can rewrite that as this.

[sourcecode language=“jscript”]

public constructorOne(String… parts){ if (parts.length == 2){ //process personFirstName, personLastName here } else{

//process personFullName logic here  }

}

[/sourcecode]

Although this functionality exists in Scala (called Tuples) and does a better job - even while returning data of multiple types. This is a good start for Java.

Now the next question one would ask is - what happens when you want to pass a list of arguments of different types. Well here’s the solution:

[sourcecode language=“jscript”]

public constructorOne(Object… parts){

//your logic here

}

[/sourcecode]

Cheers.