锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美精品,国产成人精彩在线视频九色,成人永久免费http://www.aygfsteel.com/stevenjohn/category/54771.html閭d簺闈掓槬鐨勫瞾鏈?/description>zh-cnWed, 01 Apr 2015 13:04:38 GMTWed, 01 Apr 2015 13:04:38 GMT60ImmutableMap婧愮爜瑙f瀽http://www.aygfsteel.com/stevenjohn/archive/2015/01/08/422140.htmlabinabinThu, 08 Jan 2015 11:47:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2015/01/08/422140.htmlhttp://www.aygfsteel.com/stevenjohn/comments/422140.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2015/01/08/422140.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/422140.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/422140.html棣栧厛浠嬬粛涓涓嬪熀鏈蹇碉紝浠涔堜簨immutable

浣曚負Immutable瀵硅薄錛?/strong>

綆鍗曞湴璇達紝濡傛灉涓涓璞″疄渚嬩笉鑳借鏇存敼灝辨槸涓涓狪mmutable鐨勫璞★紝Java SDK鎻愪緵鐨勫ぇ閲忓煎璞★紝姣斿String絳夐兘鏄疘mmutable鐨勫璞°?/p>

濡備綍浣垮璞mmutable錛?/strong>

鎸夌収Effective Java鐨勮鏄庯紝闇瑕佹弧瓚充笅闈㈠嚑鏉¤鍒欙細

  • 淇濊瘉綾諱笉鑳借緇ф壙 - 涓轟簡閬垮厤鍏剁戶鎵跨殑綾昏繘琛宮utable鐨勬搷浣?/li>
  • 縐昏皟鎵鏈塻etter/update絳変慨鏀瑰璞″疄渚嬬殑鎿嶄綔
  • 淇濊瘉鎵鏈夌殑field鏄痯rivate鍜宖inal鐨?/li>

涓嶅彲鍙樺璞★紙immutable objects錛夛紝鍚庨潰鏂囩珷鎴戝皢浣跨敤immutable objects鏉ヤ唬鏇夸笉鍙彉瀵硅薄錛?

閭d箞浠涔堟槸immutable objects?浠涔堝張鏄痬utable Objects鍛紵

immutable Objects灝辨槸閭d簺涓鏃﹁鍒涘緩錛屽畠浠殑鐘舵佸氨涓嶈兘琚敼鍙樼殑Objects錛屾瘡嬈″浠栦滑鐨勬敼鍙橀兘鏄駭鐢熶簡鏂扮殑immutable鐨勫璞★紝鑰宮utable Objects灝辨槸閭d簺鍒涘緩鍚庯紝鐘舵佸彲浠ヨ鏀瑰彉鐨凮bjects.

涓句釜渚嬪瓙錛歋tring鍜孲tringBuilder錛孲tring鏄痠mmutable鐨勶紝姣忔瀵逛簬String瀵硅薄鐨勪慨鏀歸兘灝嗕駭鐢熶竴涓柊鐨凷tring瀵硅薄錛岃屽師鏉ョ殑瀵硅薄淇濇寔涓嶅彉錛岃孲tringBuilder鏄痬utable錛屽洜涓烘瘡嬈″浜庡畠鐨勫璞$殑淇敼閮戒綔鐢ㄤ簬璇ュ璞℃湰韜紝騫舵病鏈変駭鐢熸柊鐨勫璞°?

浣嗘湁鐨勬椂鍊橲tring鐨刬mmutable鐗規т篃浼氬紩璧峰畨鍏ㄩ棶棰橈紝榪欏氨鏄?span style="color: #e53333;">瀵嗙爜搴旇瀛樻斁鍦ㄥ瓧絎︽暟緇勪腑鑰屼笉鏄疭tring涓?/a>鐨勫師鍥狅紒

immutable objects 姣斾紶緇熺殑mutable瀵硅薄鍦ㄥ綰跨▼搴旂敤涓洿鍏鋒湁浼樺娍錛屽畠涓嶄粎鑳藉淇濊瘉瀵硅薄鐨勭姸鎬佷笉琚敼鍙橈紝鑰屼笖榪樺彲浠ヤ笉浣跨敤閿佹満鍒跺氨鑳借鍏朵粬綰跨▼鍏變韓銆?

瀹為檯涓奐DK鏈韓灝辮嚜甯︿簡涓浜沬mmutable綾伙紝姣斿String錛孖nteger浠ュ強鍏朵粬鍖呰綾匯備負浠涔堣String鏄痠mmutable鐨勫憿錛熸瘮濡傦細java.lang.String 鐨則rim錛寀ppercase,substring絳夋柟娉曪紝瀹冧滑榪斿洖鐨勯兘鏄柊鐨凷tring瀵硅薄錛岃屽茍涓嶆槸鐩存帴淇敼鍘熸潵鐨勫璞°?

濡備綍鍦↗ava涓啓鍑篒mmutable鐨勭被錛?/span>

瑕佸啓鍑鴻繖鏍風殑綾伙紝闇瑕侀伒寰互涓嬪嚑涓師鍒欙細

1錛塱mmutable瀵硅薄鐨勭姸鎬佸湪鍒涘緩涔嬪悗灝變笉鑳藉彂鐢熸敼鍙橈紝浠諱綍瀵瑰畠鐨勬敼鍙橀兘搴旇浜х敓涓涓柊鐨勫璞°?/span>

2錛塈mmutable綾葷殑鎵鏈夌殑灞炴ч兘搴旇鏄痜inal鐨勩?/span>

3錛夊璞″繀欏昏姝g‘鐨勫垱寤猴紝姣斿錛氬璞″紩鐢ㄥ湪瀵硅薄鍒涘緩榪囩▼涓笉鑳芥硠闇?leak)銆?/span>

4錛夊璞″簲璇ユ槸final鐨勶紝浠ユ鏉ラ檺鍒跺瓙綾葷戶鎵跨埗綾伙紝浠ラ伩鍏嶅瓙綾繪敼鍙樹簡鐖剁被鐨刬mmutable鐗規с?/span>

5錛夊鏋滅被涓寘鍚玬utable綾誨璞★紝閭d箞榪斿洖緇欏鎴風鐨勬椂鍊欙紝榪斿洖璇ュ璞$殑涓涓嫹璐濓紝鑰屼笉鏄瀵硅薄鏈韓錛堣鏉″彲浠ュ綊涓虹涓鏉′腑鐨勪竴涓壒渚嬶級

褰撶劧涓嶅畬鍏ㄩ伒瀹堜笂闈㈢殑鍘熷垯涔熻兘澶熷垱寤篿mmutable鐨勭被錛屾瘮濡係tring鐨刪ashcode灝變笉鏄痜inal鐨勶紝浣嗗畠鑳戒繚璇佹瘡嬈¤皟鐢ㄥ畠鐨勫奸兘鏄竴鑷寸殑錛屾棤璁轟綘澶氬皯嬈¤綆楄繖涓鹼紝瀹冮兘鏄竴鑷寸殑錛屽洜涓鴻繖浜涘肩殑鏄氳繃璁$畻final鐨勫睘鎬у緱鏉ョ殑錛?


鏈夋椂鍊欎綘瑕佸疄鐜扮殑immutable綾諱腑鍙兘鍖呭惈mutable鐨勭被錛屾瘮濡俲ava.util.Date,灝界浣犲皢鍏惰緗垚浜唂inal鐨勶紝浣嗘槸瀹冪殑鍊艱繕鏄彲浠ヨ淇敼鐨勶紝涓轟簡閬垮厤榪欎釜闂錛屾垜浠緩璁繑鍥炵粰鐢ㄦ埛璇ュ璞$殑涓涓嫹璐濓紝榪欎篃鏄疛ava鐨勬渶浣沖疄璺典箣涓銆?br />浣跨敤Immutable綾葷殑濂藉錛?/span>
1錛塈mmutable瀵硅薄鏄嚎紼嬪畨鍏ㄧ殑錛屽彲浠ヤ笉鐢ㄨsynchronize灝卞湪騫跺彂鐜涓叡浜?/span>

2錛塈mmutable瀵硅薄綆鍖栦簡紼嬪簭寮鍙戯紝鍥犱負瀹冩棤闇浣跨敤棰濆鐨勯攣鏈哄埗灝卞彲浠ュ湪綰跨▼闂村叡浜?/span>

3錛塈mmutable瀵硅薄鎻愰珮浜嗙▼搴忕殑鎬ц兘錛屽洜涓哄畠鍑忓皯浜唖ynchroinzed鐨勪嬌鐢?/span>

4錛塈mmutable瀵硅薄鏄彲浠ヨ閲嶅浣跨敤鐨勶紝浣犲彲浠ュ皢瀹冧滑緙撳瓨璧鋒潵閲嶅浣跨敤錛屽氨鍍忓瓧絎︿覆瀛楅潰閲忓拰鏁村瀷鏁板瓧涓鏍楓備綘鍙互浣跨敤闈欐佸伐鍘傛柟娉曟潵鎻愪緵綾諱技浜巚alueOf錛堬級榪欐牱鐨勬柟娉曪紝瀹冨彲浠ヤ粠緙撳瓨涓繑鍥炰竴涓凡緇忓瓨鍦ㄧ殑Immutable瀵硅薄錛岃屼笉鏄噸鏂板垱寤轟竴涓?/span>

immutable涔熸湁涓涓己鐐瑰氨鏄細鍒墮犲ぇ閲忓瀮鍦撅紝鐢變簬浠栦滑涓嶈兘琚噸鐢ㄨ屼笖瀵逛簬瀹冧滑鐨勪嬌鐢ㄥ氨鏄?#8221;鐢?#8220;鐒跺悗”鎵?#8220;錛屽瓧絎︿覆灝辨槸涓涓吀鍨嬬殑渚嬪瓙錛屽畠浼氬垱閫犲緢澶氱殑鍨冨溇錛岀粰鍨冨溇鏀墮泦甯︽潵寰堝ぇ鐨勯夯鐑︺傚綋鐒惰繖鍙槸涓瀬绔殑渚嬪瓙錛屽悎鐞嗙殑浣跨敤immutable瀵硅薄浼氬垱閫犲緢澶х殑浠峰箋?



Guava鎻愪緵鐨処mmutableMap鏄竴涓敮鎸佸綰跨▼鐜涓嬮潰鐨勫畨鍏ㄧ殑Map錛屽悓鏃舵晥鐜囦篃鏄緢楂樼殑Key-Value闆嗗悎錛屼負浠涔堜粬灝辨槸瀹夊叏鐨勫憿銆?br />    鍏堢湅涓嬮潰渚嬪瓙錛?br />        ImmutableMap.Builder<String, Object> request = ImmutableMap.builder();
        request.put("one","1");
        request.put("two","2");
        request.put("three","3");
        Map<String, Object> map = request.build();
        
        璁╂垜浠鍏堜粠Builder<T,T>鍏ユ墜榪涜鍒嗘瀽

 public static class Builder<K, V> {
    TerminalEntry<K, V>[] entries;
    int size;


 public ImmutableMap<K, V> build() {
      switch (size) {
        case 0:
          return of();
        case 1:
          return of(entries[0].getKey(), entries[0].getValue());
        default:
          return new RegularImmutableMap<K, V>(size, entries);
      }
    }

}

涓婇潰鐨?br /> ImmutableMap.Builder<String, Object> request = ImmutableMap.builder();
榪欎釜瀹炰緥鍒涘緩鐨勬椂鍊欙紝鍙槸鍒涘緩浜嗕竴涓┖鐨勫璞°?br />閭d箞瀹為檯鏁堢敤鐨勬槸build()
  @SuppressWarnings("unchecked")
    Builder(int initialCapacity) {
      this.entries = new TerminalEntry[initialCapacity];
      this.size = 0;
    }


























         




abin 2015-01-08 19:47 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 合江县| 樟树市| 靖宇县| 景泰县| 天津市| 三原县| 肥东县| 株洲县| 宜兰市| 遂昌县| 昭通市| 昭苏县| 股票| 通辽市| 赤城县| 垣曲县| 石河子市| 介休市| 安新县| 阿克苏市| 西安市| 宁乡县| 宣城市| 若羌县| 云浮市| 马鞍山市| 兴城市| 宜宾市| 闽清县| 施秉县| 庐江县| 吴江市| 巧家县| 郎溪县| 天等县| 高雄县| 多伦县| 辛集市| 海伦市| 尤溪县| 南康市|