সরবরাহকারী ছাড়া Optional.orElseThrow()
get()-এর একটি সুস্পষ্ট, উদ্দেশ্য-প্রকাশক বিকল্প হিসাবে Optional.orElseThrow() ব্যবহার করুন।
কোড তুলনা
✕ Java 8
// Risky: get() throws if empty, no clear intent
String value = optional.get();
// Verbose: supplier just for NoSuchElementException
String value = optional
.orElseThrow(NoSuchElementException::new);
✓ Java 10+
// Clear intent: throws NoSuchElementException if empty String value = optional.orElseThrow();
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
স্ব-ডকুমেন্টিং (Self-documenting)
orElseThrow() স্পষ্টভাবে নির্দেশ করে যে, ভ্যালুর অনুপস্থিতি অপ্রত্যাশিত।
get() এড়িয়ে যায়
স্ট্যাটিক অ্যানালাইসিস টুলস get() মেথডকে ঝুঁকিপূর্ণ হিসাবে চিহ্নিত করে; orElseThrow() একটি ইডিওম্যাটিক (idiomatic) সমাধান।
কম বয়লারপ্লেট (Less Boilerplate)
ডিফল্ট NoSuchElementException-এর জন্য সাপ্লায়ার পাস করার প্রয়োজন নেই।
পুরনো পদ্ধতি
get() অথবা orElseThrow(supplier)
আধুনিক পদ্ধতি
orElseThrow()
JDK থেকে
10
কঠিনতা
প্রাথমিক
JDK সমর্থন
সরবরাহকারী ছাড়া Optional.orElseThrow()
উপলব্ধ
JDK 10 (মার্চ 2018) থেকে উপলব্ধ
কীভাবে কাজ করে
Optional.get() কে সাধারণত "কোড স্মেল" (code smell) হিসাবে বিবেচনা করা হয় কারণ এটি ফেইলুরের সম্ভাবনা লুকিয়ে রাখে। Java 10-এ যুক্ত হওয়া no-arg orElseThrow() মেথডটি ঠিক একই কাজ করে, তবে এটি ডেভেলপারদের উদ্দেশ্যকে স্পষ্টভাবে প্রকাশ করে যে, তারা একটি ভ্যালু আশা করছে এবং যদি তা না থাকে তবে একটি এক্সেপশন চাই।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ