کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

کلاس اختیاری در Java 8

کلاس اختیاری در Java 8

Optional یا اختیاری شیء نگهدارنده ای است که می توان اشیاء غیرتهی را در آن نگهداری کرد. جهت ارائه ی تهی و در صورت نبود مقدار از اشیاء اختیاری استفاده می شود. این کلاس جهت تسهیل کد نویسی و مدیریت مقادیر به صورت ‘available’ یا ‘not available’ به جای بررسی مقادیر تهی، متدهای کاربردی متعددی دارد. این کلاس در Java 8 معرفی شده است و شبیه به کلاس اختیاری Guava است.


اعلان کلاس در Java 8

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

public final class Optional< T > extends Object

Method Class در Java 8

ردیف
متد و توضیحات
1
static < T >Optional< T >empty()
یک نمونه ی اختیاری تهی را برگشت می دهد.
2
boolean equals(Object obj)
بیانگر این است که شیئی برابر یا این کلاس اختیاری است یا خیر.
3
Optional< T >filter(Predicatepredicate)
اگر مقداری وجود داشته باشد و این مقدار با گزاره ی معلومی مطابقت داشته باشد، در این صورت آپشنالی برگشت داده می شود که این مقدار را توصیف می کند. در غیر این صورت یک آپشنال تهی برگشت داده می شود.
4
< U >Optional< U >flatMap(Function> mapper)
اگر مقداری وجود داشته باشد، در این صورت تابع نگاشت حامل آپشنال موجود بر روی آن اعمال می شود و نتیجه برگشت داده می شود. در غیر این صورت یک Optional تهی برگشت داده می شود.
5
T get()
اگر مقداری در این آپشنال وجود داشته باشد، در این صورت این مقدار برگشت داده می شود و در غیر این صورت خطای NoSuchElementException رخ می دهد.
6
int hashCode()
مقدار کد هش مقدار موجود را در صورت وجود برگشت می دهد. در صورتی که مقداری موجود نباشد، 0 را برگشت می دهد.
7
void ifPresent(Consumer consumer)
اگر مقداری موجود باشد، مصرف کننده ی مشخصی را به همراه مقدار آن برگشت می دهد، در غیر این صورت کاری انجام نمی دهد.
8
boolean isPresent()
در صورتی که مقداری موجود باشد، true را برگشت می دهد، در غیر این صورت false را برگشت می دهد.
9
< U >Optional< U >map(Function mapper) اگر مقداری موجود باشد، تابع نگاشت ارائه شده را بر روی آن اعمال می کند و اگر نتیجه غیرتهی باشد، آپشنالی را برگشت می دهد که نتیجه را توصیف می کند.
10
static < T >Optional< T >of(T value)
آپشنالی را به همراه مقدار غیرتهی حاضر و مشخص برگشت می دهد.
11
static < T >Optional< T >ofNullable(T value)
آپشنالی را برگشت می دهد که مقدار مشخص شده را توصیف می کند، به شرط آن که مقدار تهی نباشد. در غیر این صورت یک آپشنال تهی را برگشت می دهد.
12
T orElse(T other)
در صورت وجود مقدار را برگشت می دهد و در غیر این صورت مقدار دیگر را برگشت می دهد.
13
T orElseGet(Supplier other)
در صورت وجود مقدار را برگشت می دهد و در غیر این صورت مقدار دیگر را احضار می کند و نتیجه ی این احضار را برگشت می دهد.
14
< X extends Throwable > T orElseThrow(Supplier exceptionSupplier)
مقدار مشمول را در صورت وجود برگشت می دهد، در غیر این صورت خطای exception می دهد تا این مقدار توسط تأمین کننده ی موجود ایجاد شود.
15
String toString()
نمایش رشته ای غیرتهی از این آپشنال که برای رفع اشکال مناسب است را برگشت می دهد.

این کلاس متدهای کلاس زیر را به ارث می برد:

  • java.lang.Object

مثالی برای آپشنال در Java 8

برنامه ی زیر را با استفاده از یکی از ویرایشگرهای مورد نظر خود مثلا در C:\> JAVA ایجاد کنید.
Java8Tester.java

import java.util.Optional;
public class Java8Tester {
   public static void main(String args[]) {
      Java8Tester java8Tester = new Java8Tester();
      Integer value1 = null;
      Integer value2 = new Integer(10);
		
      //Optional.ofNullable - allows passed parameter to be null.
      Optional< Integer > a = Optional.ofNullable(value1);
		
      //Optional.of - throws NullPointerException if passed parameter is null
      Optional< Integer > b = Optional.of(value2);
      System.out.println(java8Tester.sum(a,b));
   }
	
   public Integer sum(Optional< Integer > a, Optional< Integer > b) {
      //Optional.isPresent - checks the value is present or not
		
      System.out.println("First parameter is present: " + a.isPresent());
      System.out.println("Second parameter is present: " + b.isPresent());
		
      //Optional.orElse - returns the value if present otherwise returns
      //the default value passed.
      Integer value1 = a.orElse(new Integer(0));
		
      //Optional.get - gets the value, value should be present
      Integer value2 = b.get();
      return value1 + value2;
   }
}

نتیجه را بررسی کنید

با استفاده از کامپایلر javac مانند زیر این کلاس را کامپایل کنید.

C:\JAVA>javac Java8Tester.java

حالا مانند زیر Java8Tester را اجرا کنید.

C:\JAVA>java Java8Tester

نتیجه باید به صورت زیر نمایش داده شود.

First parameter is present: false
Second parameter is present: true
10

برای مطالعه سرفصل آموزش جاوا (J2SE) کلیک نمایید .


1397/10/26 2148 627
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...