java - 为什么有些类的方法开始先判断getId() == null?
黄舟
黄舟 2017-04-18 09:38:01
0
7
497
  1. mybatis3中PerpetualCache中的equals和hashCode方法在第一行先判断getId() == null, 有点不能理解, 为什么要这个判断, 不是不可能为null吗。

  2. 代码如下:

  @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();
  }
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(7)
黄舟

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.

洪涛

id menentukan keunikan cache, hashCode, kaedah sama untuk menentukan rujukan keunikan

巴扎黑

Ini adalah tabiat pengaturcaraan yang baik

左手右手慢动作

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

左手右手慢动作

Not bad, saya belajar banyak

左手右手慢动作

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

左手右手慢动作

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan