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

為什么要使用String

開發(fā) 后端
最近在培訓(xùn)課期間指導(dǎo)初學(xué)者。任務(wù)之一就是要大家完成一個(gè)類,要求這個(gè)類對(duì)key為String類型的map執(zhí)行dwarwle操作。其中一位學(xué)員完成的類中,有如下方法:

最近在培訓(xùn)課期間指導(dǎo)初學(xué)者。任務(wù)之一就是要大家完成一個(gè)類,要求這個(gè)類對(duì)key為String類型的map執(zhí)行dwarwle操作。其中一位學(xué)員完成的類中,有如下方法:

  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.     } 

這段代碼總的來(lái)說(shuō)是OK的。該方法將map中每個(gè)Dwarable的key和值,以及和它期望被分解的dwarwleKey一同傳得給另一個(gè)調(diào)用方法。因?yàn)楣δ芎?jiǎn)單,我就不詳細(xì)描述了。只要了解dwarwle的含義,就能輕易地知道這個(gè)方法會(huì)干什么。這樣的函數(shù)簡(jiǎn)單且具有較好的可讀性。但是,這個(gè)方法期待參數(shù)是一個(gè)HashMap,而不是Map。為什么在這里我們會(huì)強(qiáng)迫調(diào)用者使用HashMap呢?如果調(diào)用者出于某種原因需要使用TreeMap,那么是不是還要重新添加另外一個(gè)相同的方法來(lái)接受TreeMap呢? 當(dāng)然不是。

“參數(shù)類型使用接口,調(diào)用時(shí)傳入實(shí)現(xiàn)該接口的對(duì)象。”

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

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

突然要回答這樣的問(wèn)題可不是那么容易的。首先我想到是,我們通常都那么做,這就是原因。但是這個(gè)答案根本沒(méi)有說(shuō)服力,至少我本人不會(huì)接受這樣的回答,我也希望我的學(xué)生不要接受這樣的答案。這是一種非常獨(dú)裁方式的回答。

真正的答案是,因?yàn)檫@個(gè)參數(shù)作為Map的key,而Map的key通常期望是不可變的(至少變化不會(huì)影響equals和hashCode的計(jì)算)。CharSequence是一個(gè)接口,Java并沒(méi)有規(guī)定接口的可變性,只有具體的實(shí)現(xiàn)才能決定。String是CharSequence的具體實(shí)現(xiàn),被廣泛熟知并且經(jīng)過(guò)了嚴(yán)格的測(cè)試,在這里是個(gè)不錯(cuò)的選擇。

在這個(gè)具體的例子中,我們更傾向于String,因?yàn)樗遣豢勺兊模↖mmutable)。并且我們不能完全信任調(diào)用者會(huì)傳遞一個(gè)不可變的CharSequence的具體實(shí)現(xiàn)。假如我們可以信任調(diào)用者,那么我們可能為此付出代價(jià)。當(dāng)StringBuilder作為參數(shù)傳遞到該方法,并且之后它的值發(fā)生了改變,我們寫的類庫(kù)就很可能不會(huì)工作。當(dāng)設(shè)計(jì)API或者類庫(kù)的時(shí)候,我們要考慮的不僅是我們期望的某些可能,而且需要考慮現(xiàn)實(shí)中的種種可能。

“實(shí)踐才是檢驗(yàn)真理的***標(biāo)準(zhǔn)。”

不僅限于類庫(kù),這也可能適用于其他產(chǎn)品。這似乎扯遠(yuǎn)了。

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

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

責(zé)任編輯:張偉 來(lái)源: ImportNew
相關(guān)推薦

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

交換機(jī)技術(shù)Vlan技術(shù)

2023-09-21 09:00:00

Merge Que開發(fā)工具Mergify

2014-01-03 10:59:34

2023-03-06 08:01:25

structGo語(yǔ)言

2024-01-01 08:57:55

ODBCSqlServer數(shù)據(jù)庫(kù)

2021-12-24 17:01:29

Linux工具系統(tǒng)

2022-04-26 16:56:20

行為數(shù)據(jù)數(shù)據(jù)

2020-08-24 07:03:10

物聯(lián)網(wǎng)設(shè)備RTOS物聯(lián)網(wǎng)

2018-05-01 06:43:33

2024-02-20 22:13:49

SQL語(yǔ)句編程

2021-02-18 09:23:47

數(shù)據(jù)庫(kù)分區(qū)數(shù)據(jù)庫(kù)倉(cāng)庫(kù)

2023-11-29 09:19:00

WebhookURL

2018-11-02 14:00:20

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕在线播放第一页 | 国产美女精品视频 | 日韩伦理一区二区 | 九九久久这里只有精品 | 国产午夜精品一区二区三区 | 久久久精品亚洲 | 欧美99 | a级免费黄色片 | 亚洲精久久 | 国产成人免费视频 | 亚洲视频欧美视频 | 日韩视频在线观看一区二区 | 欧美电影在线观看网站 | 欧美综合国产精品久久丁香 | 日日天天 | 国产精品视频免费观看 | 久久久国产一区二区三区 | www.日韩在线 | 特级a欧美做爰片毛片 | 久国久产久精永久网页 | av播播| 91精品国产91久久久久久吃药 | 99热这里只有精品8 激情毛片 | xxx视频| 91.色| 荷兰欧美一级毛片 | 99久久99久久精品国产片果冰 | 丝袜一区二区三区 | 国产精品一区在线观看你懂的 | 欧美一区二区三区小说 | 欧美一级片在线播放 | 午夜影院在线播放 | 91文字幕巨乱亚洲香蕉 | 中文字幕一区二区三区四区五区 | 日韩欧美中文 | 精品免费 | 91精品国产欧美一区二区成人 | 中文字幕一级 | 日韩欧美在线观看 | 久草精品视频 | 能看的av |