1401-08-18 16:24 جاوا برابر با انتخاب () است
xavier12

 
در جاوا، اگر بخواهم ()do.equals را روی یک رشته تهی انجام دهم، یک خطای اشاره گر تهی صادر می شود. اگر بخواهم یک رشته برابر با یک رشته ثابت مقایسه کنم، نمیدانم آیا میتوانم موارد زیر را انجام دهم:
MY CONSTANT STRING.equals(aStringVariable)

من مطمئن هستم که کار خواهد کرد، اما آیا این کد بسیار بد است؟
این یک اصطلاح رایج جاوا است که در محاوره به عنوان یک شرط Yoda شناخته می شود. من شخصا ترجیح میدهم به طور مستقیم وضعیت پوچ را مدیریت کنم، اما روش Yoda به طور گسترده
من باید یک ساختار داده بسازم که نشان دهنده وراثت گراف کلاس های موجود در فایل باشد
استفاده میشود و هر برنامهنویس جاوا شایسته باید به سرعت آنچه را که در حال وقوع است درک کند. چگونه باید ادامه دهم؟
1401-08-20 22:59
حاجی شریفی
مؤسس سایت
 
سلام
متاسفانه بنده سی-شارپ کار کرده ام و جاوا بلد نیستم ولی مفهوم سوال را متوجه میشوم و ترفند Yoda را میدانم
//C# 
string x = null ;
if (x.Equals("CONST")) { ... } //NullReferenceException

string x = null ;
if ("CONST".Equals(x)) { ... } //OK


این ترفند در سی-شارپ که خوب جواب میدهد، اگر در جاوا هم کار میکند پس مشکلی نیست
چرا استفاده نشود؟

البته دستورات زیر هم در سی-شارپ صحیح هستند و موجب خطا نمیشوند
ولی نمیدانم شبیه این دستورات در Java وجود دارد یا خیر و چه شرایطی دارد !
//C# 
string x = null ;
if (x?.Equals("CONST") ?? false ) { ... } //OK

string x = null ;
if (x == "CONST") { ... } //OK

string x = null ;
string y = null ;
if (x == y) { ... } //OK

string x = null ;
string y = null ;
if (object .Equals(x, y)) { ... } //OK


موفق باشید.
1401-08-24 12:58
xavier12

 
با تشکر برای شفاف سازی! روش شما واقعا به من کمک کرد برادر