在JAVA中,同一个项目中,是允许多个类的存在main函数的。
其实,想一想就明白了,JAVA是真正的面向对象语言;所有程序的运行,都基于类;而每一个类,都应该是完整的。
main函数为static函数,在JAVA里,static函数可以直接使用类类型进行调用,也可以实例化一个对象进行调用。
也就是说,在JAVA里,可以直接调用另一个类的main函数。
当然,需要做的事情是,在运行的时候,需要给JVM指定特定的主类运行。如下图所示(Eclipse中):
代码如下:
class SupertTest {
public static void main(String[] args) {
MainTest mainTest = new MainTest();
mainTest.main(args);
}
}
class MainTest {
public static void main(String[] args) {
System.out.println("Main Test");
}
}
另外,还有一种方法,即调用反射方法;相当于暴露另一个类的函数接口,进行函数调用。整个程序功能如下:
import java.lang.reflect.Method;
class SupertTest {
public static void main(String[] args) {
//直接调用
MainTest mainTest = new MainTest();
mainTest.main(args);
//采用反射方法调用
ClassLoader classLoader = SupertTest.class.getClassLoader();
try {
Class<?> loadClass = classLoader.loadClass("MainTest");
Method method = loadClass.getMethod("main", String[].class);
method.invoke(null, new Object[] { new String[] {} } );
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MainTest {
public static void main(String[] args) {
System.out.println("Main Test");
}
}
程序输出
Main Test
Main Test
说明程序正确运行。