第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么有些類的方法開始先判斷getId() == null?

為什么有些類的方法開始先判斷getId() == null?

肥皂起泡泡 2019-03-27 21:14:05
mybatis3中PerpetualCache中的equals和hashCode方法在第一行先判斷getId() == null, 有點不能理解, 為什么要這個判斷, 不是不可能為null嗎。代碼如下:  @Override  public boolean equals(Object o) {    if (getId() == null) {      throw new CacheException("Cache instances require an ID.");    }    if (this == o) {      return true;    }    if (!(o instanceof Cache)) {      return false;    }    Cache otherCache = (Cache) o;    return getId().equals(otherCache.getId());  }  @Override  public int hashCode() {    if (getId() == null) {      throw new CacheException("Cache instances require an ID.");    }    return getId().hashCode();  }
查看完整描述

5 回答

?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

當(dāng)協(xié)作工作時,你是無法判斷調(diào)用方的,我們口頭的約定是很容易被某個人輕易打破的,為了避免有人去做這樣的事,參數(shù)檢查是很有意義也很有必要的行為,這樣也便于問題的排查


查看完整回答
反對 回復(fù) 2019-04-22
?
蠱毒傳說

TA貢獻1895條經(jīng)驗 獲得超3個贊

假如getId()==null呢,你把原因和結(jié)果搞反了,是因為不允許為空,所以有了if判斷,如果為空,拋出一個自定義異常,告訴你不能為null


查看完整回答
反對 回復(fù) 2019-04-22
?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

這個是DBC的策略實現(xiàn)
DBC分三種:
1.Post-conditions 后置條件postcondition 表示調(diào)用一個方法一定會得到的結(jié)果。類似斷言Assertion,如果語言不支持斷言,那么我們就必須自己寫斷言,也就是測試驅(qū)動了。

2.Pre-conditions 前置條件precondition ,預(yù)先保證后置條件必須滿足前置條件。
前置條件必須滿足,后置條件必須實現(xiàn),通過契約的前置和后置條件的結(jié)合,就不會出現(xiàn)有隱藏的功能obligations,這樣,事情清清楚楚地被擺出來。這樣設(shè)計才能落實為代碼,保證正常的對象調(diào)用。

3.類不變量class invariant 表示對象狀態(tài)的斷言,執(zhí)行完任何操作后都都應(yīng)該被滿足,不變量還是對聚合體進行完整性嚴格定義。


查看完整回答
反對 回復(fù) 2019-04-22
  • 5 回答
  • 0 關(guān)注
  • 916 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號