for what I know, method main has the following assignature: public static void main(String args); (correct me if I'm wrong) if somebody has the answer for why the signature can't be: public static void main(Object obj); tell me!!!
public static void main(Object obj) is a perfectly valid method signature. It just won't be run as the result of a command line execute. When you run "java MyClass", the JVM looks for a method in MyClass with the signature: public static void main(String  args) If it doesn't find one, then it will exit with an error message. They could have created the JVM to look for a method of a different signature, but they didn't. Anyway, to the original question ... if you run: java MyClass a b c then a, b, and c will be available in your "main" method as args, args, and args.