একটি জাভা স্ট্যান্ডিক পদ্ধতি "উভয় নাল বা সমান" আছে?


101

কিছু টাইপিং সংরক্ষণ করতে এবং আমার কোডটি পরিষ্কার করতে, নীচের পদ্ধতির কোনও মানক সংস্করণ আছে কি?

public static boolean bothNullOrEqual(Object x, Object y) {
  return ( x == null ? y == null : x.equals(y) );
}

কেউ কি বলতে পারবেন যেখানে এই জাতীয় জিনিসটি কার্যকর?
অঞ্জনব

2
এটি আপনাকে কেবল আপনার সমান () পদ্ধতিতে নাল চেকগুলি এড়াতে দেয়।
মাইকেল

1
আপনি যদি সংগ্রহটি বাস্তবায়ন করছেন, আপনার "নিয়ন্ত্রণ" () পদ্ধতিটি দেওয়া হলে "o" পরীক্ষা করা দরকার "যদি এই সংগ্রহে কমপক্ষে একটি উপাদান থাকে যেমন (o == নাল? ই == নাল: o.equals (e ))। " একইভাবে, আপনার .remove () পদ্ধতিতে এই জাতীয় উপাদান অপসারণ করতে হবে।
newacct

6
শুধু আমার দুই সেন্ট। আমি ব্যবহার করব: সর্বজনীন স্ট্যাটিক বুলিয়ান উভয় নালআরকুইক্যাল (অবজেক্ট এক্স, অবজেক্ট y) {রিটার্ন (x == y || (x! = নাল && x.equals (y))); } আইএমএইচও, নবজাতক প্রোগ্রামারদের জন্য এটি আরও পঠনযোগ্য।
m_vitaly

1
আরেকটি ব্যবহারের ক্ষেত্রে: একটি মানের তুলনা করুন এটি নোংরা চেক চলাকালীন আগের মান থেকে পরিবর্তিত হয়েছে কিনা তা দেখার জন্য to
নেরোমেন্সার

উত্তর:


193

জাভা 7 এর সাহায্যে আপনি এখন সরাসরি নাল নিরাপদ সমান করতে পারেন:

অবজেক্টস.একুয়ালস (x, y)

(জাকার্তা কমন্স লাইব্রেরি অবজেক্ট ইউটিস.ইকুয়ালস () জাভা with সহ অচল হয়ে পড়েছে)


এই পদ্ধতিটি গুগলস নির্ভরতা ইনজেকশন-লিব্রে গুইসেও প্রয়োগ করা হয়।
নিলস

1
বসন্ত এছাড়াও একই ধরণের পদ্ধতি প্রয়োগ করে: অবজেক্ট ইউটিলেস ক্লাসে
নালসএফএকএলস

2
গুগল পেয়ারাতেও অবজেক্টস.একুয়ালস () রয়েছে।
স্পিনা

এটি কেবল নালাসেফ কনসারিং এক্স। Y এর জন্য এটি প্রদত্ত বস্তুর সমতুল্য প্রয়োগের উপর নির্ভর করে। (বাস্তবায়নটি হ'ল return (x == y) || (x != null && x.equals(y));)
ইমি-লে

23

যদি কোনও সুযোগে আপনি জাকার্তা কমন্স লাইব্রেরিতে অ্যাক্সেস পেয়ে থাকেন তবে সেখানে অবজেক্ট ইউটিস.ইকুয়ালস () এবং প্রচুর অন্যান্য দরকারী কার্যকারিতা রয়েছে।

সম্পাদনা: প্রাথমিকভাবে প্রশ্নটি ভুলভাবে পড়া


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.