سری مطالب آموزش جاوا ۸ – بخش هفتم کلاسهای Optional
کلاسهای Optional در حقیقت یک شیء دربرگیرنده[1] هستند و برای دربرگرفتن اشیاء غیر null (غیر تهی) استفاده میشوند. شیء Optional برای نمایش null با مقدار غایب (null بدون مقدار) استفاده میشود. این کلاس متدهای مختلف و سودمندی در جهت تسهیل کد بهمنظور اداره و کنترل مقادیرِ در دسترس و غیر دسترس بهجای چک کردنِ مقادیر null و غیر null دارد. این نوع کلاسها در جاوا 8 معرفیشدهاند و شبیه به مفهوم Optional در کتابخانه Guava از گوگل است.
اعلان کلاس
در ادامه اعلان این نوع کلاس با java.util.Optional<T> آمده است.
- public final class Optional<T> extends Object
متدهای کلاس و توصیف آنها:
- static <T> Optional<T> empty()
که یک نمونه شیء[2] خالیِ Optional بازمیگرداند.
- boolean equals(Object obj)
کد بالا نشاندهنده این است که آیا شیء دیگری برابر با این Optional وجود دارد یا خیر.
- Optional<T> filter(Predicate<? super <T> predicate)
کد بالا نشاندهنده این است که اگر یک مقداری داشته باشیم که با مقدار پیشبینیشده توسط predicate مطابقت داشته باشد، آنگاه کد بالا یک Optional برمیگرداند که توصیفکننده آن مقدار باشد و در غیر این صورت یک Optional خالی یا تهی برمیگرداند.
- <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)
کد بالا میگوید اگر یک مقدار حاضر داشته باشیم، از تابع نگاشت بافرِ Optional استفاده میکنیم که آن نتیجه را بازمیگرداند در غیر این صورت عبارت یک Optional تهی بازخواهد گرداند.
- T get()
معنی تکه کد بالا بدینصورت است که اگر مقداری در این Optional حاضر باشد، آن مقدار را برمیگرداند در غیر این صورت وقفه NoSuchElementException را throws میکند.
- int hashCode()
کد بالا مقدار hash کدِ مقدار حاضر را برمیگرداند (اگر وجود داشته باشد) یا اگر هیچ مقداری حاضر نبود صفر بازمیگرداند.
- void if Present(Consumer<? super T> consumer)
اگر مقداری حاضر باشد، آن مقدار یک consumer[3] بخصوص را مقدار مشخصی صدا میزند[4]، در غیر این صورت کاری انجام نمیدهد.
- boolean isPresent()
اگر مقداری حاضر باشد، true بازمیگرداند و در غیر این صورت false
- <U>Optional<U> map(Function<? super T,? extends U> mapper)
اگر مقدار حاضر باشد این Optional تابع نگاشت آمادهشده رو رویش اعمال میکند و اگر نتیجه null نباشد یک Optional بازمیگرداند که توصیفکننده آن نتیجه است.
بخشهای دیگر مقاله را از لینکهای زیر دنبال کنید:
سری مطالب آموزش جاوا ۸ – بخش هفتم کلاسهای Optional (قسمت دوم)
[1] Container
[2] instance
[3] Consumerیک Design Pattern معرفیشده در جاوا 8 است
[4] invoke