Hmmm...I'm not really sure why that works. According to the JVMS,
§5.2 Virtual Machine Start-up:
The Java virtual machine starts up by creating an initial class, which is specified in an implementation-dependent manner, using the bootstrap class loader (�5.3.1). The Java virtual machine then links the initial class, initializes it, and invokes its public class method void main(String[]). The invocation of this method drives all further execution. Execution of the Java virtual machine instructions constituting the main method may cause linking (and consequently creation) of additional classes and interfaces, as well as invocation of additional methods.
and from the JLS,
§12.1.4 Invoke Test.main:
Finally, after completion of the initialization for class Test (during which other consequential loading, linking, and initializing may have occurred), the method main of Test is invoked.
The method main must be declared public, static, and void. It must accept a single argument that is an array of strings.
Of course, none of this says what happens in the cast the main method doesn't meet these requirements. As far as the exam goes, however, remember that main must be public, static, and take an array of Strings.
Corey