জাভা 8-তে, আমি কোনও Optional
অবজেক্ট উপস্থিত থাকলে কিছু করতে চাই এবং এটি উপস্থিত না থাকলে অন্য কাজ করতে চাই।
if (opt.isPresent()) {
System.out.println("found");
} else {
System.out.println("Not found");
}
যদিও এটি 'কার্যকরী শৈলী' নয়।
Optional
একটি ifPresent()
পদ্ধতি আছে, কিন্তু আমি একটি orElse()
পদ্ধতি শৃঙ্খল করতে অক্ষম ।
সুতরাং, আমি লিখতে পারি না:
opt.ifPresent( x -> System.out.println("found " + x))
.orElse( System.out.println("NOT FOUND"));
@Asslias জবাবে, আমি মনে করি না যে Optional.map()
নিম্নলিখিত ক্ষেত্রে কাজ করে:
opt.map( o -> {
System.out.println("while opt is present...");
o.setProperty(xxx);
dao.update(o);
return null;
}).orElseGet( () -> {
System.out.println("create new obj");
dao.save(new obj);
return null;
});
এই ক্ষেত্রে, যখন opt
উপস্থিত থাকি, আমি এর সম্পত্তি আপডেট করি এবং ডাটাবেসে সংরক্ষণ করি। এটি উপলভ্য না হলে আমি একটি নতুন তৈরি obj
করে ডেটাবেসে সংরক্ষণ করি।
দুটি ল্যাম্বডায় নোট আমাকে ফিরতে হবে null
।
তবে যখন opt
উপস্থিত হবে, উভয় ল্যাম্বডাস কার্যকর করা হবে। obj
আপডেট করা হবে, এবং একটি নতুন বস্তু ডাটাবেসে সংরক্ষণ করা হবে। এটি কারণ return null
প্রথম ল্যাম্বডায়। এবং orElseGet()
কার্যকর করা চালিয়ে যাবে।
return null;
দিয়ে প্রতিস্থাপন করুন return o;
। যাইহোক, আমার দৃ .় অনুভূতি আছে যে আপনি ভুল জায়গায় কাজ করছেন। আপনার যে সাইটটি তৈরি হয়েছিল সেখানে কাজ করা উচিত Optional
। সেই জায়গায় মধ্যবর্তী ছাড়াই পছন্দসই অপারেশন করার একটি উপায় থাকা উচিত Optional
।
ifPresent
বিরোধিতা জানি । অন্যান্য সমস্ত পদ্ধতি ক্রিয়াকে না করে মানকে বোঝায়।