Rumah  >  Soal Jawab  >  teks badan

java - 为什么有些类的方法开始先判断getId() == null?

  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();
  }
黄舟黄舟2763 hari yang lalu472

membalas semua(7)saya akan balas

  • 黄舟

    黄舟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.

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:40:01

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

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:40:01

    Ini adalah tabiat pengaturcaraan yang baik

    balas
    0
  • ringa_lee

    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

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 09:40:01

    Not bad, saya belajar banyak

    balas
    0
  • ringa_lee

    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

    balas
    0
  • ringa_lee

    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.

    balas
    0
  • Batalbalas