前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java Final关键字与HashMap

Java Final关键字与HashMap

作者头像
用户7886150
修改2020-12-14 15:17:09
7720
修改2020-12-14 15:17:09
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Java中的final关键字

Why final is not applied for Map ?  Prabhat Ranjan Ranch Hand Joined: Oct 04, 2006Posts: 374  

       posted 2010年11月16日 GMT+8下午8:00:19 

      Hi, Map hm= new HashMap(); hm.put("hash","test"); ok final Map hm= new HashMap(); hm.put("hash","test");// this should not allow here as Map i have declared as final. ko but Map hms = Collections.unmodifiable(hm) is working fine. Matthew Brown Bartender Joined: Apr 06, 2010Posts: 4115      

           4

      I like...

       posted 2010年11月16日 GMT+8下午8:02:20 

      Prabhat Ranjan wrote:final Map hm= new 

      HashMap(); 

      hm.put("hash","test");// this should not allow here as Map i have declared as final. 

      But hm is still pointing at the same object. final means that the reference can't be altered, not the object itself. Paul Sturrock Bartender Joined: Apr 14, 2004Posts: 10336 

      I like...

       posted 2010年11月16日 GMT+8下午8:09:12 

      hm.put("hash","test");// this should not allow here as Map i have declared as final. [ 

      Final does not imply unmodifiable, unless the object is immutable. If you want an unmodifiable map have a look at the Collections class, or alternatively wrap the map in your own custom immutable class.

 如果要实现HashMap不可被修改,即如果不可变类的成员变量是可变的(譬如HashMap),我们需要使用深拷贝(deep copy)或者克隆来防止成员变量被更改: 

  private 

  final 

  HashMap testMap; 

  ……

  ……

  ……

  /** 

  * 可变对象的访问方法 

  */ 

  public 

  HashMap getTestMap() { 

  //return testMap; 

  return 

  (HashMap) testMap.clone(); 

  }

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档