آموزشمطالب ویژه

سری مطالب آموزش جاوا ۸ – بخش هفتم کلاس‌های Optional

 

 

کلاس‌های Optional در حقیقت یک شی‌ء دربرگیرنده[۱] هستند و برای دربرگرفتن اشیاء غیر null (غیر تهی) استفاده می‌شوند. شیء Optional برای نمایش null با مقدار غایب (null بدون مقدار) استفاده می‌شود. این کلاس متدهای مختلف و سودمندی در جهت تسهیل کد به‌منظور اداره و کنترل مقادیرِ در دسترس و غیر دسترس به‌جای چک کردنِ مقادیر null و غیر null دارد. این نوع کلاس‌ها در جاوا ۸ معرفی‌شده‌اند و شبیه به مفهوم Optional در کتابخانه Guava از گوگل است.

 

اعلان کلاس

در ادامه اعلان این نوع کلاس با  java.util.Optional<T>   آمده است.

  1. public final class Optional<T> extends Object

 

متدهای کلاس و توصیف آن‌ها:

  1. static <T> Optional<T> empty()

که یک نمونه شیء[۲] خالیِ Optional بازمی‌گرداند.

 

 

  1. boolean equals(Object obj)

کد بالا نشان‌دهنده این است که آیا شیء دیگری برابر با این Optional وجود دارد یا خیر.

 

 

  1. Optional<T> filter(Predicate<? super <T> predicate)

کد بالا نشان‌دهنده این است که اگر یک مقداری داشته باشیم که با مقدار پیش‌بینی‌شده توسط predicate مطابقت داشته باشد، آنگاه کد بالا یک Optional برمی‌گرداند که توصیف‌کننده آن مقدار باشد و در غیر این صورت یک Optional خالی یا تهی بر‌می‌گرداند.

 

 

  1. <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)

کد بالا می‌گوید اگر یک مقدار حاضر داشته باشیم، از تابع نگاشت بافرِ Optional استفاده می‌کنیم که آن نتیجه را بازمی‌گرداند در غیر این صورت عبارت یک Optional تهی بازخواهد گرداند.

 

 

  1. T get()

معنی تکه کد بالا بدین‌صورت است که اگر مقداری در این Optional حاضر باشد، آن مقدار را برمی‌گرداند در غیر این صورت وقفه NoSuchElementException را throws می‌کند.

 

 

  1. int hashCode()

کد بالا مقدار hash کدِ مقدار حاضر را برمی‌گرداند (اگر وجود داشته باشد) یا اگر هیچ مقداری حاضر نبود صفر بازمی‌گرداند.

 

  1. void if Present(Consumer<? super T> consumer)

اگر مقداری حاضر باشد، آن مقدار یک consumer[3] بخصوص را مقدار مشخصی صدا می‌زند[۴]، در غیر این صورت کاری انجام نمی‌دهد.

 

  1. boolean isPresent()

اگر مقداری حاضر باشد، true بازمی‌گرداند و در غیر این صورت false

 

  1. <U>Optional<U> map(Function<? super T,? extends U> mapper)

اگر مقدار حاضر باشد این Optional تابع نگاشت آماده‌شده رو رویش اعمال می‌کند و اگر نتیجه null نباشد یک Optional بازمی‌گرداند که توصیف‌کننده آن نتیجه است.

بخش‌های دیگر مقاله را از لینک‌های زیر دنبال کنید:

سری مطالب آموزش جاوا ۸ – بخش هفتم کلاس‌های Optional (قسمت دوم)

 

 

[۱] Container

[۲] instance

[۳] Consumerیک Design Pattern معرفی‌شده در جاوا ۸ است

[۴] invoke

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا