এখন 6+ মাস বা তার বেশি সময় ধরে জাভা 8 ব্যবহার করা হয়েছে, আমি নতুন এপিআই পরিবর্তনগুলি নিয়ে বেশ খুশি। এক স্থান আমি এখনও আত্মবিশ্বাসী নই যখন ব্যবহার করা Optional
। আমার মনে হয় এটি যে null
কোনও জায়গায় পাওয়া যেতে পারে এবং এটি কোথাও নেই it
আমি যখন এটি ব্যবহার করতে পারি তখন অনেকগুলি পরিস্থিতি মনে হয় এবং আমি কখনই নিশ্চিত নই যে এটির সুবিধা (পাঠযোগ্যতা / নাল সুরক্ষা) যুক্ত হয়েছে বা কেবল অতিরিক্ত ওভারহেডের কারণ রয়েছে।
সুতরাং, আমার কয়েকটি উদাহরণ রয়েছে এবং আমি Optional
উপকারী কিনা সে সম্পর্কে সম্প্রদায়ের চিন্তাগুলিতে আগ্রহী ।
1 - পাবলিক পদ্ধতি হিসাবে রিটার্ন টাইপ যখন পদ্ধতিটি ফিরে আসতে পারে null
:
public Optional<Foo> findFoo(String id);
2 - প্যারামটি যখন হতে পারে কোনও পদ্ধতি প্যারামিটার হিসাবে null
:
public Foo doSomething(String id, Optional<Bar> barOptional);
3 - একটি শিমের alচ্ছিক সদস্য হিসাবে:
public class Book {
private List<Pages> pages;
private Optional<Index> index;
}
4 - ইন Collections
:
সাধারণভাবে আমি মনে করি না:
List<Optional<Foo>>
কিছু যুক্ত করে - বিশেষত যেহেতু কেউ মান ইত্যাদি filter()
মুছে ফেলার জন্য ব্যবহার করতে পারে null
তবে Optional
সংগ্রহগুলিতে কি কোনও ভাল ব্যবহার রয়েছে ?
কোন মামলা আমি মিস করেছি?
.filter(Optional::absent)
"নাল মান" আউট করতে পারেন
getOrDefault()
কি আরও ভাল প্রকাশ করা যায় না ?
Map<Character, String>
। যদি কোন প্রতিকল্পন আমি এই ব্যবহার করতে পারেন:Optional.ofNullable(map.get(c)).orElse(String.valueOf(c))
। এছাড়াও নোট করুন যেOptional.fromNullable(map.get(c)).or(String.valueOf(c));