最近在看单例模式的实现,看到有一种利用JAVA静态内部类的特性来实现,对于内部类我还真是不了解,遂了解了一下,代码贴上。

/**
 * 内部类分为:成员内部类、局部内部类、匿名内部类和静态内部类。 */public class Demo {    /*
     * 1.成员内部类:成员内部类是最普通的内部类,
     *  它的定义为位于另一个类的内部。     */
    class Inside1 {        public void say() {
            System.out.println("Inside1 say...");
        }
    }    /*
     * 2.局部内部类:局部内部类是定义在一个方法或者一个作用域里面的类,
     * 它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。
     * 局部内部类就像局部变量一样,是不能有public、protected、private以及static修饰符的。     */
    public Demo fun1() {        class Woman extends Demo{            int age = 0;
        }        return new Woman();
    }    
    /*
     * 3.匿名内部类:匿名内部类在编译的时候由系统自动起名为Outter$1.class。
     * 一般来说,匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写     */
    public void fun2(){        new JFrame().addKeyListener(new KeyListener() {            public void keyTyped(KeyEvent e) {}            public void keyReleased(KeyEvent e) {}            public void keyPressed(KeyEvent e) {}
     &n