你忽视的静态类的作用(必看)

  在进行代码程序测试的时候,如果在每一个Java源文件中都设置一个主方法(主方法是某个应用程序的入口,必须具有),那么会出现很多额外的代码。而且最主要的时这段主程序的代码对于Java文件来说,只是一个形式,其本身并不需要这种主方法。但是少了这个主方法又是万万不行的。在这种情况下,就可以将主方法写入到静态内部类中,从而不用为每个Java源文件都设置一个类似的主方法。这对于代码测试是非常有用的。在一些中大型的应用程序开发中,则是一个常用的技术手段。为此,这个静态内部类虽然不怎么常用,但是程序开发人员还必须要掌握它。也许在某个关键的时刻,其还可以发挥巨大的作用也说不定。

public class MainInStaticClass {
 
 static class Main{
    static void main() {
        //将主方法写到静态内部类中,从而不必为每个源文件都这种一个类似的主方法
        new MainInStaticClass().print();
       }
    }
 
    public static void main(String[] args){
        new MainInStaticClass().print();
    }
 
    public void print(){
        System.out.println("main in static inner class");
    }
 }
 
 
 public class TestMain {
 
 
 public static void main(String[] args) {
     // TODO Auto-generated method stub
     // new MainInStaticClass().print();
     MainInStaticClass.Main.main();
     new MainInStaticClass.Main();
 }
 
}                

 参考:http://blog.sina.com.cn/s/blog_605f5b4f0100zbps.html#cmt_2283173

 总结:目地不是为了使得代码更简洁,而是在保证代码可读性的时候提供测试功能。对于一个英语程序而言,最好只有一个main入口函数。可以这么想,你有两个功能需要执行,分别执行A.class和B.class,A和B分别有main方法,所有需要两个main方法,分两次执行。但是如果A和B分别具有静态内部类C和D的话,就可以分别将A和B的main方法封装成成员方法,在内部C和D的静态成员方法E和F中调用,这样你只需要在一个main中调用A.C.E()和B.D.F()即可

原文地址:https://www.cnblogs.com/xiaoguangit/p/4989296.html