public class Singleton {  
    private static class SingletonHolder {  
    private static final Singleton INSTANCE = new Singleton();  
    }  
    private Singleton (){}  
    public static final Singleton getInstance() {  
    return SingletonHolder.INSTANCE;  
    }  
}  
上面的代码是通过静态内部类来实现单列模式。其中有一个地方不太理解,
为什么getInstance方法里为什么要用final来修饰?

解决方案 »

  1.   

    final修饰方法,不能被子类重定义
      

  2.   

    第一这里没有静态内部类,第二这里final没有意义,有或者没有都没有什么影响
      

  3.   

    三楼正解,你的代码里面用的final没意义。内部类需要用final是java对这种类类型参数的数据访问造成的;主要为了防止外部类实例对内部类参数进行修改,防止外部数据跟内部实例内的数据不一致
      

  4.   

    final修饰的类不能被继承,final修饰的成员变量不能改值,final修饰的方法不能被重写
      

  5.   

    getInstance是个静态方法,子类无法重写父类的静态方法,所以加不加final没有什么意义