জাভা 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বিরোধিতা জানি । অন্যান্য সমস্ত পদ্ধতি ক্রিয়াকে না করে মানকে বোঝায়।