English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Optional054054类054054是一个可以为null的容器对象。054054如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
Optional هو حاوية: يمكنه حفظ قيمة من نوع T، أو يمكن أن يحتوي فقط على null. يقدم Optional العديد من الطرق المفيدة، حيث لا نحتاج إلى إجراء فحص القيمة الفارغة بشكل صريح.
تم حل استثناء Null Pointer بشكل جيد من قبل إدخال فئة Optional.
إليك مثال على java.util.Optional<T> بيان الفئة:
public final class Optional<T> يتوسع في Object
رقم | الطريقة & الوصف |
---|---|
1 | static <T> Optional<T> empty() يعود بـOptional فارغ. |
2 | boolean equals(Object obj) تحديد ما إذا كانت Optional تساوي لـ Object آخر. |
3 | Optional<T> filter(Predicate<? super <T> predicate) إذا كانت القيمة موجودة، وكانت القيمة تطابق predicate المحدد، يتم العودة بـOptional يصف هذه القيمة، وإلا يتم العودة بـOptional فارغ. |
4 | <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper) إذا كانت القيمة موجودة، يتم العودة بالقيمة بناءً على الدالة التحويلية الموجودة في Optional، وإلا يتم العودة بـOptional فارغ. |
5 | T get() إذا كانت القيمة موجودة في Optional هذا، يتم العودة بالقيمة، وإلا يتم إلقاء استثناء NoSuchElementException. |
6 | int hashCode() يعود بـhashCode يحتوي على القيمة الموجودة، وإذا كانت القيمة غير موجودة يعود بـ0. |
7 | void ifPresent(Consumer<? super T> consumer) إذا كانت القيمة موجودة، يتم استدعاء consumer باستخدام هذه القيمة، وإلا لا يتم القيام بأي شيء. |
8 | boolean isPresent() إذا كانت القيمة موجودة، يتم العودة بـtrue، وإلا يتم العودة بـfalse. |
9 | <U>Optional<U> map(Function<? super T,? extends U> mapper) إذا كانت القيمة موجودة، يتم تنفيذ الدالة التحويلية عليها للحصول على القيمة المعدلة. إذا كانت القيمة المعدلة ليست null، يتم إنشاء Optional يحتوي على القيمة المعدلة كقيمة العودة للدالة map، وإلا يتم العودة بـOptional فارغ. |
10 | static <T> Optional<T> of(T value) يعود بـOptional يحتوي على قيمة غير null المحددة. |
11 | static <T> Optional<T> ofNullable(T value) إذا كانت غير فارغة، تعيد القيمة المحددة من Optional، وإلا تعيد Optional فارغًا |
12 | T orElse(T other) إذا كانت القيمة موجودة، تعيد القيمة، وإلا تعيد other |
13 | T orElseGet(Supplier<? extends T> other) إذا كانت القيمة موجودة، تعيد القيمة، وإلا يُطلق other، وتعيد نتائج other |
14 | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) إذا كانت القيمة موجودة، تعيد القيمة المضمونة، وإلا أرفع استثناء موروث من Supplier |
15 | String toString() يعيد Optional نصًا غير فارغًا للاستخدام في الت调试 |
ملاحظة: هذه الطرق مأخوذة من java.lang.Object موروث من الفئة.
يمكننا من خلال الأمثلة التالية فهم استخدام فئة 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