English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات Java الأساسية

Java054054流程控制

Java054054数组

Java054054面向对象(I)

Java054054面向对象(II)

Java054054面向对象(III)

معالجة الاستثناءات Java

Java054054列表(List)

Java054054Queue(队列)

Java054054Map集合

Java054054Set集合

Java054054输入输出(I/O)

Java054054Reader/Writer

Java054054其他主题

Java0540548054054Optional054054类

ميزات Java 8 الجديدة

Optional054054类054054是一个可以为null的容器对象。054054如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。

Optional هو حاوية: يمكنه حفظ قيمة من نوع T، أو يمكن أن يحتوي فقط على null. يقدم Optional العديد من الطرق المفيدة، حيث لا نحتاج إلى إجراء فحص القيمة الفارغة بشكل صريح.

تم حل استثناء Null Pointer بشكل جيد من قبل إدخال فئة Optional.

بيان الفئة

إليك مثال على java.util.Optional<T> بيان الفئة:

public final class Optional<T>
يتوسع في Object

طريقة فئة

رقمالطريقة & الوصف
1static <T> Optional<T> empty()

يعود بـOptional فارغ.

2boolean equals(Object obj)

تحديد ما إذا كانت Optional تساوي لـ Object آخر.

3Optional<T> filter(Predicate<? super <T> predicate)

إذا كانت القيمة موجودة، وكانت القيمة تطابق predicate المحدد، يتم العودة بـOptional يصف هذه القيمة، وإلا يتم العودة بـOptional فارغ.

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

إذا كانت القيمة موجودة، يتم العودة بالقيمة بناءً على الدالة التحويلية الموجودة في Optional، وإلا يتم العودة بـOptional فارغ.

5T get()

إذا كانت القيمة موجودة في Optional هذا، يتم العودة بالقيمة، وإلا يتم إلقاء استثناء NoSuchElementException.

6int hashCode()

يعود بـhashCode يحتوي على القيمة الموجودة، وإذا كانت القيمة غير موجودة يعود بـ0.

7void ifPresent(Consumer<? super T> consumer)

إذا كانت القيمة موجودة، يتم استدعاء consumer باستخدام هذه القيمة، وإلا لا يتم القيام بأي شيء.

8boolean isPresent()

إذا كانت القيمة موجودة، يتم العودة بـtrue، وإلا يتم العودة بـfalse.

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

إذا كانت القيمة موجودة، يتم تنفيذ الدالة التحويلية عليها للحصول على القيمة المعدلة. إذا كانت القيمة المعدلة ليست null، يتم إنشاء Optional يحتوي على القيمة المعدلة كقيمة العودة للدالة map، وإلا يتم العودة بـOptional فارغ.

10static <T> Optional<T> of(T value)

يعود بـOptional يحتوي على قيمة غير null المحددة.

11static <T> Optional<T> ofNullable(T value)

إذا كانت غير فارغة، تعيد القيمة المحددة من Optional، وإلا تعيد Optional فارغًا

12T orElse(T other)

إذا كانت القيمة موجودة، تعيد القيمة، وإلا تعيد other

13T orElseGet(Supplier<? extends T> other)

إذا كانت القيمة موجودة، تعيد القيمة، وإلا يُطلق other، وتعيد نتائج other

14<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

إذا كانت القيمة موجودة، تعيد القيمة المضمونة، وإلا أرفع استثناء موروث من Supplier

15String toString()

يعيد Optional نصًا غير فارغًا للاستخدام في الت调试

ملاحظة: هذه الطرق مأخوذة من java.lang.Object موروث من الفئة.

مثال Optional

يمكننا من خلال الأمثلة التالية فهم استخدام فئة Optional بشكل أفضل:

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 - يسمح بمرور معامل null
      Optional<Integer> a = Optional.ofNullable(value1);
        
      // Optional.of - إذا كان المعامل المقدم null، أرفع استثناء NullPointerException
      Optional<Integer> b = Optional.of(value2);
      System.out.println(java8Tester.sum(a,b));
   {}
    
   public Integer sum(Optional<Integer> a, Optional<Integer> b){
    
      //Optional.isPresent -�断 القيمة موجودة أم لا
        
      System.out.println("قيمة المعامل الأولى موجودة: " + a.isPresent());
      System.out.println("قيمة المعامل الثانية موجودة: " + b.isPresent());
        
      //Optional.orElse - إذا كانت القيمة موجودة، فترجعها، وإلا ترجع القيمة الافتراضية
      Integer value1 = a.orElse(new Integer(0));
        
      //Optional.get - الحصول على القيمة، يجب أن تكون القيمة موجودة
      Integer value2 = b.get();
      return value1 + value2;
   {}
{}

إذا تم تنفيذ السكريبت أعلاه، فإن الناتج سيكون:

$ javac Java8Tester.java 
$ java Java8Tester
قيمة المعامل الأولى ثنائي: false
قيمة الثانية للمعامل ثنائي: true
10

ميزات Java 8 الجديدة