Optional.ifPresentOrElse()
Optional-এর present এবং empty উভয় কেইসকে একটি সিঙ্গেল কল-এই হ্যান্ডেল করুন।
কোড তুলনা
✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
greet(user.get());
} else {
handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
this::greet,
this::handleMissing
);
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
সিঙ্গেল এক্সপ্রেশন
উভয় কেইস একটি মেথড কল-এই হ্যান্ডেল করা যায়।
get() এর প্রয়োজন নেই
বিপজ্জনক isPresent() + get() প্যাটার্ন বাদ দেয়।
ফ্লুয়েন্ট
findUser() বা যেকোনো Optional-রিটার্নিং মেথডের পরে স্বাভাবিকভাবে চেইন হয়।
পুরনো পদ্ধতি
if/else on Optional
আধুনিক পদ্ধতি
ifPresentOrElse()
JDK থেকে
9
কঠিনতা
প্রাথমিক
JDK সমর্থন
Optional.ifPresentOrElse()
উপলব্ধ
JDK 9 (সেপ্টেম্বর 2017) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
ifPresentOrElse() মেথডটি present কেইসের জন্য একটি Consumer এবং empty কেইসের জন্য একটি Runnable নেয়। এটি isPresent()/get() অ্যান্টি-প্যাটার্ন এড়িয়ে যায়।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ