public class TestSingle{
  private static final TestSingle onlyOne=new TestSingle();
  public static TestSingle getTestSingle(){
    return onlyOne;
  }
  private TestSingle(){}
}
其中第一个private和final分别起了什么作用
请教了

解决方案 »

  1.   

    public static TestSingle getTestSingle(){ 
        return onlyOne; 
      }这里应该加个判断吧如果为创建则创建,否则直接返回。
      

  2.   

    补充:
    单例模式要实现的是一种系统中有且只有一个对象的需求,所有的外部对象访问的都是同一个实例:
    1. private TestSingle(){} 中的private保证了它的外部不可创建性(这一点很容易被忽视),只能通过getTestSingle()获取实例的ref.
    2. private static final TestSingle onlyOne=new TestSingle(); 中的new保证了系统中有一个实例,static保证了这个实例是唯一的一个实例, private保证了get方法中取出的ref是不会被外部修改的(比如改成null).至于final本例中可有可无,它只是用来保证onlyOne在TestSingle内也不可以再被修改了(除非有性能问题).
      

  3.   

    private static final TestSingle onlyOne=new TestSingle(); 
    有了这一句就不会未创建了,所以不用判断.