Rumah > Soal Jawab > teks badan
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();
}
黄舟2017-04-18 09:40:01
Kaedah rangka kerja asas tidak dapat mengetahui semua penggunaan lapisan aplikasi Berkemungkinan besar sesetengah orang tidak mematuhi peraturan Untuk memastikan ketepatan program, adalah perlu untuk membuat beberapa kod pertahanan.
PHP中文网2017-04-18 09:40:01
id menentukan keunikan cache, hashCode, kaedah sama untuk menentukan rujukan keunikan
ringa_lee2017-04-18 09:40:01
Apabila bekerja secara kolaboratif, anda tidak boleh menilai perjanjian lisan kami dengan mudah dilanggar oleh seseorang Untuk mengelakkan seseorang melakukan perkara sedemikian, semakan parameter adalah sangat bermakna dan perlu, yang juga memudahkan penyelesaian masalah
ringa_lee2017-04-18 09:40:01
Bagaimana jika getId()==null, anda telah membalikkan sebab dan hasil, kerana ia tidak dibenarkan menjadi batal, jadi terdapat penghakiman jika jika ia adalah batal, pengecualian tersuai akan dilemparkan untuk memberitahu anda perkara itu ia tidak boleh menjadi
ringa_lee2017-04-18 09:40:01
Ini adalah pelaksanaan strategi DBC
Terdapat tiga jenis DBC:
1.Post-conditions postcondition mewakili hasil yang pasti akan diperolehi dengan memanggil kaedah. Sama seperti penegasan, jika bahasa tidak menyokong penegasan, maka kita mesti menulis penegasan sendiri, yang didorong oleh ujian.
2.Pra-syarat prasyarat, yang menjamin terlebih dahulu bahawa pasca-syarat mesti memenuhi pra-syarat.
Prasyarat mesti dipenuhi, dan pasca syarat mesti direalisasikan Melalui gabungan prasyarat dan pasca syarat kontrak, tidak akan ada obligasi fungsian yang tersembunyi, supaya perkara-perkara itu dibentangkan dengan jelas. Hanya dengan cara ini reka bentuk boleh dilaksanakan ke dalam kod untuk memastikan panggilan objek biasa.
3. Invarian kelas invarian mewakili penegasan keadaan objek, yang harus dipenuhi selepas melakukan sebarang operasi Invarian masih mentakrifkan integriti agregat.