جاوا: مسئله برابری شیject

عکس پروفایل نویسنده

من در حال نوشتن برخی از کد های تست جاوا بودم که با شدت اینترنت مواجه شدم

equals

روش. علی رغم سادگی ظاهری ، این یک مشکل پیچیده است.

می خواهم تأکید کنم که این یک مسئله خاص جاوا نیست. به عنوان مثال C # روشی همولوگ دارد.

کمی از زمینه جاوا

Object

کلاس ریشه هر کلاس است. این روش های مختلفی را تعریف می کند و

equals

یکی از آنهاست به طور پیش فرض این روش یک رفتار ساده دارد: یک شی x فقط با خودش برابر است. هر شی دیگری متفاوت است.

بدیهی است که

equals

روش دارای خصوصیات مشترک یک رابطه معادل است. این است بازتابنده: x برابر با x است ؛ این است متقارن: اگر x برابر با y باشد ، y برابر است با x ؛ و به همین ترتیب …

بعلاوه یک رابطه منطقی پیوند می خورد

equals

و

hashCode

روش. دومی هش شی returns را برمی گرداند. در این زمینه این یک نمایش عددی صحیح از شی است. بنابراین اگر دو جسم برابر هستند ، باید هش آنها نیز برابر باشد.

مشکل

من یک مثال ساده کد را برای برجسته کردن مسئله اصلی استفاده می کنم. اینجا نقطه شروع است:

interface Book {
  String title();

  String author();
}

final class DbBook implements Book {
  ...
}

می توانیم از a

Book

عنوان آن و نویسنده آن. آ

DbBook

نمونه نشان دهنده کتابی است که در یک پایگاه داده ذخیره شده است.

همانطور که گفتم

Object

کلاس ریشه هر کلاس است. این بدان معنی است که

DbBook

سئو PBN | خبر های جدید سئو و هک و سرور