Java הציגה מחלקה חדשה אופציונלית ב-jdk8. זהו שיעור סופי ציבורי ומשמש להתמודדות עם NullPointerException ביישום Java. עליך לייבא את חבילת java.util כדי להשתמש במחלקה זו. הוא מספק שיטות המשמשות לבדיקת נוכחות ערך עבור משתנה מסוים.
שיטות כיתה אופציונליות של Java
שיטות | תיאור |
---|---|
public static אופציונלי ריק() | זה מחזיר אובייקט אופציונלי ריק. אין ערך עבור אופציונלי זה. |
סטטי ציבורי אופציונלי של (ערך T) | הוא מחזיר אופציונלי עם הערך הנוכחי שאינו ריק. |
סטטי ציבורי אופציונלי שלNullable(ערך T) | הוא מחזיר אופציונלי המתאר את הערך שצוין, אם אינו ריק, אחרת מחזיר אופציונלי ריק. |
public T get() | אם קיים ערך באופציונלי זה, מחזיר את הערך, אחרת זורק את NoSuchElementException. |
בוליאני ציבורי isPresent() | זה מחזיר אמת אם יש ערך נוכח, אחרת false. |
ריק ציבורי ifPresent (צרכן צרכן) | אם קיים ערך, פנה לצרכן שצוין עם הערך, אחרת אל תעשה דבר. |
ציבורי מסנן אופציונלי (פרדיקט פרדיקט) | אם קיים ערך, והערך תואם לפרדיקט הנתון, החזר אופציונלי המתאר את הערך, אחרת החזר אופציונלי ריק. |
מפה ציבורית אופציונלית (מפה פונקציות) | אם קיים ערך, החל את פונקציית המיפוי שסופקה עליו, ואם התוצאה אינה אפס, החזר אופציונלי המתאר את התוצאה. אחרת החזר ריק אופציונלי. |
ציבורי אופציונלי flatMap(פונקציה super T,Optional mapper) | אם קיים ערך, החל את פונקציית המיפוי הנושאת אופציונלית שסופקה עליו, החזר את התוצאה, אחרת החזר אופציונלי ריק. |
ציבורי T orElse(T אחר) | הוא מחזיר את הערך אם קיים, אחרת מחזיר אחר. |
public T orElseGet (ספק אחר) | הוא מחזיר את הערך אם קיים, אחרת הפעילו אחר והחזירו את התוצאה של אותה קריאה. |
public T orElseThrow(Supplier exceptionSupplier) זורק X extends Throwable | הוא מחזיר את הערך הכלול, אם קיים, אחרת זורקים חריג שייווצר על ידי הספק שסופק. |
ציבורי בוליאני שווה (Object obj) | מציין אם אובייקט אחר 'שווה' לאופציונלי זה או לא. האובייקט השני נחשב שווה אם:
|
public int hashCode() | הוא מחזיר את ערך קוד ה-hash של הערך הנוכחי, אם קיים, או מחזיר 0 (אפס) אם אין ערך. |
public String toString() | הוא מחזיר ייצוג מחרוזת לא ריקה של אופציונלי זה המתאים לניפוי באגים. פורמט המצגת המדויק אינו מוגדר ועשוי להשתנות בין יישומים וגרסאות. |
דוגמה: תוכנית Java ללא שימוש אופציונלי
בדוגמה הבאה, אנחנו לא משתמשים במחלקה אופציונלית. תוכנית זו מסתיימת בצורה חריגה וזורקת nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
תְפוּקָה:
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
כדי להימנע מהסיום החריג, אנו משתמשים בכיתה אופציונלית. בדוגמה הבאה, אנו משתמשים באופציונלי. אז, התוכנית שלנו יכולה להפעיל מבלי לקרוס.
דוגמה אופציונלית של Java: אם הערך אינו קיים
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; Optional checkNull = Optional.ofNullable(str[5]); if(checkNull.isPresent()){ // check for value is present or not String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); }else System.out.println('string value is not present'); } }
תְפוּקָה:
string value is not present
דוגמה אופציונלית של Java: אם קיים ערך
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE';// Setting value for 5th index Optional checkNull = Optional.ofNullable(str[5]); if(checkNull.isPresent()){ // It Checks, value is present or not String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); }else System.out.println('String value is not present'); } }
תְפוּקָה:
java optional class example
דוגמה נוספת ל-Java אופציונלית
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE'; // Setting value for 5th index Optional checkNull = Optional.ofNullable(str[5]); checkNull.ifPresent(System.out::println); // printing value by using method reference System.out.println(checkNull.get()); // printing value by using get method System.out.println(str[5].toLowerCase()); } }
תְפוּקָה:
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
דוגמה לשיטות אופציונליות של Java
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE'; // Setting value for 5th index // It returns an empty instance of Optional class Optional empty = Optional.empty(); System.out.println(empty); // It returns a non-empty Optional Optional value = Optional.of(str[5]); // If value is present, it returns an Optional otherwise returns an empty Optional System.out.println('Filtered value: '+value.filter((s)->s.equals('Abc'))); System.out.println('Filtered value: '+value.filter((s)->s.equals('JAVA OPTIONAL CLASS EXAMPLE'))); // It returns value of an Optional. if value is not present, it throws an NoSuchElementException System.out.println('Getting value: '+value.get()); // It returns hashCode of the value System.out.println('Getting hashCode: '+value.hashCode()); // It returns true if value is present, otherwise false System.out.println('Is value present: '+value.isPresent()); // It returns non-empty Optional if value is present, otherwise returns an empty Optional System.out.println('Nullable Optional: '+Optional.ofNullable(str[5])); // It returns value if available, otherwise returns specified value, System.out.println('orElse: '+value.orElse('Value is not present')); System.out.println('orElse: '+empty.orElse('Value is not present')); value.ifPresent(System.out::println); // printing value by using method reference } }
תְפוּקָה:
Optional.empty Filtered value: Optional.empty Filtered value: Optional[JAVA OPTIONAL CLASS EXAMPLE] Getting value: JAVA OPTIONAL CLASS EXAMPLE Getting hashCode: -619947648 Is value present: true Nullable Optional: Optional[JAVA OPTIONAL CLASS EXAMPLE] orElse: JAVA OPTIONAL CLASS EXAMPLE orElse: Value is not present JAVA OPTIONAL CLASS EXAMPLE