开发者社区 问答 正文

java单例模式断点调试

public class DynamicDataTransfer{ 

  public static EnterprisePropertyInitSetting eInit = EnterprisePropertyInitSetting.getInstance(); 

} 
 
public class EnterprisePropertyInitSetting{
    private static EnterprisePropertyInitSetting eInit = null;
    public final static String ENTERPRISE_PROPERTY_KEY_PRE = "enterprise_property_key_pre";
    private Map map;
    public Map getMap(){
        return this.map;
    }
    public void clearMap(){
        this.map.clear();
    }
    public void setMap(String key,RowSetDTO eProperty){
        this.map.put(key, eProperty);
    }
     
    public void delMap(String key){
        this.map.remove(key);
    }
    public static EnterprisePropertyInitSetting getInstance(){
        if(eInit==null){
            eInit=new EnterprisePropertyInitSetting();
            Map eMap = new HashMap();
            eInit.map=eMap;
        } 
        return eInit;
    }
}

但我断点调试出现这样的情况。eInit有一个私有的静态变量但是和DynamicDataTransfer的eInit是同一个。是我写法有问题吗?
screenshot

展开
收起
爵霸 2016-06-13 11:59:29 2259 分享 版权
1 条回答
写回答
取消 提交回答
  • 红色方块右上访的S表示他是static成员,这没问题,要不是同一个才有问题了。

    另外你的单例类没有private的构造函数,无法保证是单例,另外你用的是懒汉式,getInstance最好是要有synchronized修饰

    2019-07-17 19:35:37
    赞同 展开评论
问答分类:
问答地址: