真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

為什么要使用String

本篇文章為大家展示了為什么要使用String,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)杭錦后,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

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

void dwarwle(HashMap mapToDwarwle, String dwarwleKey){     for( final Entry entry : mapToDwarwle.entrySet()){         dwarwle(entry.getKey(),entry.getValue(),dwarwleKey);     } }

這段代碼總的來說是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è)相同的方法來接受TreeMap呢? 當(dāng)然不是。

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

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

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

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

真正的答案是,因?yàn)檫@個(gè)參數(shù)作為Map的key,而Map的key通常期望是不可變的(至少變化不會(huì)影響equals和hashCode的計(jì)算)。CharSequence是一個(gè)接口,Java并沒有規(guī)定接口的可變性,只有具體的實(shí)現(xiàn)才能決定。String是CharSequence的具體實(shí)現(xiàn),被廣泛熟知并且經(jīng)過了嚴(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ā)生了改變,我們寫的類庫就很可能不會(huì)工作。當(dāng)設(shè)計(jì)API或者類庫的時(shí)候,我們要考慮的不僅是我們期望的某些可能,而且需要考慮現(xiàn)實(shí)中的種種可能。

“實(shí)踐才是檢驗(yàn)真理的***標(biāo)準(zhǔn)?!?/p>

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

上述內(nèi)容就是為什么要使用String,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前名稱:為什么要使用String
鏈接URL:http://weahome.cn/article/iiiips.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部