Saturday, April 19, 2014

Overloading main() in Java

A common fresher interview goes like, Can we overloading main() in Java?
It's a very tricky question on the face of it. But if we just recollect basics, it won't be too hard to answer.

Answer is Yes, we can very much do.

By default we use String args[] as the method argument for main(). We can have multiple mains with different arguments types.

class OverloadedMain{
public static void main(String args[]){
System.out.println("String args[] main");
main(12);
main("JavaOnJava");
main("Java", "OnJava");
}
public static void main(int arg){
System.out.println("integer arument main "+ arg);
}
public static void main(String arg) {
System.out.println("One String argument main "+ arg);
}
public static void main(String arg1, String arg2) {
System.out.println("Two String argument main "+ arg1+" "+ arg2 );
}
}


String args[] main
integer arument main 12
One String argument main JavaOnJava
Two String argument main Java OnJava
view raw result.bat hosted with ❤ by GitHub


Error Cases
1. main(String args[]) is missing
class WrongMain{
public static void main(String arg) {
System.out.println("One String argument main "+ arg);
}
}
view raw WrongMain.java hosted with ❤ by GitHub

Error: Main method not found in class WrongMain, please define the main method as:
public static void main(String[] args)
view raw wrongmain.bat hosted with ❤ by GitHub