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個贊

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

溫溫醬
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)該被滿足,不變量還是對聚合體進行完整性嚴格定義。
添加回答
舉報
0/150
提交
取消