আমি জাভা 8- এ নতুন ptionচ্ছিক প্রকারের সাথে কাজ করছি , এবং আমি এমন একটি সাধারণ অপারেশন বলে মনে করি যা কার্যত সমর্থিত নয়: একটি "orElseOptional"
নিম্নলিখিত নিদর্শন বিবেচনা করুন:
Optional<Result> resultFromServiceA = serviceA(args);
if (resultFromServiceA.isPresent) return result;
else {
Optional<Result> resultFromServiceB = serviceB(args);
if (resultFromServiceB.isPresent) return resultFromServiceB;
else return serviceC(args);
}
এই প্যাটার্নের অনেকগুলি রূপ রয়েছে তবে এটি একটি onচ্ছিক "orElse" চাওয়াতে উত্সাহিত করে যা একটি নতুন alচ্ছিক উত্পাদন করার জন্য একটি ফাংশন নেয়, কেবলমাত্র বর্তমানের অস্তিত্ব না থাকলে তাকে ডাকা হয়।
এটির বাস্তবায়নটি এর মতো দেখায়:
public Optional<T> orElse(Supplier<Optional<? extends T>> otherSupplier) {
return value != null ? this : other.get();
}
আমি কৌতূহলবোধ করি যদি এমন কোনও পদ্ধতির অস্তিত্ব না থাকে, যদি আমি কেবল অপ্রয়োজনীয় উপায়ে ptionচ্ছিকভাবে ব্যবহার করি এবং লোকেরা কীভাবে অন্যান্য ক্ষেত্রে এই মামলাটি মোকাবেলা করতে এসেছে।
আমার বলা উচিত যে আমি মনে করি যে কাস্টম ইউটিলিটি ক্লাস / পদ্ধতিগুলির সাথে জড়িত সমাধানগুলি মার্জিত নয় কারণ আমার কোড নিয়ে কাজ করা লোকেরা অগত্যা তাদের অস্তিত্ব বুঝতে পারে না।
এছাড়াও, যদি কেউ জানে, এই জাতীয় পদ্ধতিটি জেডিকে 9-তে অন্তর্ভুক্ত করা হবে এবং আমি কোথায় এই জাতীয় পদ্ধতির প্রস্তাব দিতে পারি? এটি আমার কাছে এপিআই-তে একটি চমকপ্রদ বাদ দেওয়ার মতো বলে মনে হচ্ছে।
orElseGet()
OP চ্ছিক ইতিমধ্যে ওপি-র প্রয়োজনের জন্য রয়েছে, কেবল এটি দুর্দান্ত ক্যাসকেডিং সিনট্যাক্স তৈরি করে না।