成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么要使用String

開發 后端
最近在培訓課期間指導初學者。任務之一就是要大家完成一個類,要求這個類對key為String類型的map執行dwarwle操作。其中一位學員完成的類中,有如下方法:

最近在培訓課期間指導初學者。任務之一就是要大家完成一個類,要求這個類對key為String類型的map執行dwarwle操作。其中一位學員完成的類中,有如下方法:

  1. void dwarwle(HashMap<String,Dwarwable> mapToDwarwle, String dwarwleKey){ 
  2.     forfinal Entry<String, Dwarwable> entry : mapToDwarwle.entrySet()){ 
  3.         dwarwle(entry.getKey(),entry.getValue(),dwarwleKey); 
  4.     } 

這段代碼總的來說是OK的。該方法將map中每個Dwarable的key和值,以及和它期望被分解的dwarwleKey一同傳得給另一個調用方法。因為功能簡單,我就不詳細描述了。只要了解dwarwle的含義,就能輕易地知道這個方法會干什么。這樣的函數簡單且具有較好的可讀性。但是,這個方法期待參數是一個HashMap,而不是Map。為什么在這里我們會強迫調用者使用HashMap呢?如果調用者出于某種原因需要使用TreeMap,那么是不是還要重新添加另外一個相同的方法來接受TreeMap呢? 當然不是。

“參數類型使用接口,調用時傳入實現該接口的對象。”

這位初學者使用Map代替了HashMap。但是大約5分鐘之后,這位聰明的女士又提出了這樣一個問題:

“如果我們用Map替換HashMap,那么為什么不用CharSequence來替換String呢?”

突然要回答這樣的問題可不是那么容易的。首先我想到是,我們通常都那么做,這就是原因。但是這個答案根本沒有說服力,至少我本人不會接受這樣的回答,我也希望我的學生不要接受這樣的答案。這是一種非常獨裁方式的回答。

真正的答案是,因為這個參數作為Map的key,而Map的key通常期望是不可變的(至少變化不會影響equals和hashCode的計算)。CharSequence是一個接口,Java并沒有規定接口的可變性,只有具體的實現才能決定。String是CharSequence的具體實現,被廣泛熟知并且經過了嚴格的測試,在這里是個不錯的選擇。

在這個具體的例子中,我們更傾向于String,因為它是不可變的(Immutable)。并且我們不能完全信任調用者會傳遞一個不可變的CharSequence的具體實現。假如我們可以信任調用者,那么我們可能為此付出代價。當StringBuilder作為參數傳遞到該方法,并且之后它的值發生了改變,我們寫的類庫就很可能不會工作。當設計API或者類庫的時候,我們要考慮的不僅是我們期望的某些可能,而且需要考慮現實中的種種可能。

“實踐才是檢驗真理的***標準。”

不僅限于類庫,這也可能適用于其他產品。這似乎扯遠了。

原文鏈接: javacodegeeks 翻譯: ImportNew.com nealjob

譯文鏈接: http://www.importnew.com/13664.html

責任編輯:張偉 來源: ImportNew
相關推薦

2011-03-08 12:59:38

proftpd

2017-07-03 13:33:42

AndroidItemDecorat

2011-04-14 09:30:15

集合框架

2010-05-11 10:29:06

Unix awk

2014-05-19 15:52:57

Apache StraApache

2014-04-25 10:05:42

OpenStack私有云公共云

2024-01-24 11:24:03

C++編程異常處理

2013-09-27 11:33:57

交換機技術Vlan技術

2023-09-21 09:00:00

Merge Que開發工具Mergify

2014-01-03 10:59:34

2023-03-06 08:01:25

structGo語言

2024-01-01 08:57:55

ODBCSqlServer數據庫

2021-12-24 17:01:29

Linux工具系統

2022-04-26 16:56:20

行為數據數據

2018-05-01 06:43:33

2024-02-20 22:13:49

SQL語句編程

2020-08-24 07:03:10

物聯網設備RTOS物聯網

2021-02-18 09:23:47

數據庫分區數據庫倉庫

2023-11-29 09:19:00

WebhookURL

2018-11-02 14:00:20

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品一区二区三区在线播放 | 国产一区二区三区在线视频 | 久久久视 | 极品在线| 国产农村妇女毛片精品久久麻豆 | 国产精品久久久久久久久久久久久久 | 日韩小视频 | 成人三区 | 美女爽到呻吟久久久久 | 一区二区在线不卡 | 亚洲中午字幕 | 亚洲精品成人av久久 | 国产精品久久国产精品 | 日日草夜夜草 | 色在线免费 | 亚洲精品观看 | 精品一区二区视频 | 成人精品免费视频 | 中文字幕在线观看一区 | 国产片淫级awww | 精品国产乱码久久久久久88av | 伊人精品一区二区三区 | 欧美在线观看一区 | 日韩中文字幕免费 | 狠狠骚| 亚洲国产成人久久综合一区,久久久国产99 | 欧美久久久网站 | 欧美亚洲国产日韩 | 欧美日韩精品一区二区三区四区 | 日本欧美国产在线观看 | 男女羞羞视频在线观看 | 国产精品一区二区三区在线 | 免费特黄视频 | 欧美不卡 | 亚洲国产精品久久久久 | 国产精品小视频在线观看 | 亚洲一区二区视频在线播放 | 午夜视频在线播放 | 一区二区三区精品在线 | 男女羞羞视频大全 | 久久亚洲一区 |