Java 8 - İsteğe Bağlı Sınıf
İsteğe bağlı, boş olmayan nesneleri içermekte kullanılan bir kap nesnesidir. İsteğe bağlı nesne, boş değeri olmayan değerle temsil etmek için kullanılır. Bu sınıf, kodun boş değerleri kontrol etmek yerine 'kullanılabilir' veya 'kullanılamaz' olarak işlemesini kolaylaştırmak için çeşitli yardımcı yöntemlere sahiptir. Java 8'de tanıtıldı ve Guava'da İsteğe Bağlı olana benzer.
Sınıf Beyanı
Aşağıdaki beyanı java.util.Optional<T> sınıf -
public final class Optional<T> extends Object
Sınıf Yöntemi
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | static <T> Optional<T> empty() Boş bir İsteğe Bağlı örnek döndürür. |
2 | boolean equals(Object obj) Başka bir nesnenin bu İsteğe bağlı "eşit" olup olmadığını gösterir. |
3 | Optional<T> filter(Predicate<? super <T> predicate) Bir değer varsa ve değer belirli bir yüklemle eşleşiyorsa, değeri açıklayan İsteğe Bağlı bir döndürür, aksi takdirde boş bir İsteğe Bağlı döndürür. |
4 | <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper) Bir değer varsa, sağlanan İsteğe bağlı yatak eşleme işlevini ona uygular, bu sonucu döndürür, aksi takdirde boş bir İsteğe Bağlı döndürür. |
5 | T get() Bu İsteğe Bağlı'da bir değer varsa, değeri döndürür, aksi takdirde NoSuchElementException oluşturur. |
6 | int hashCode() Varsa, mevcut değerin karma kodu değerini veya değer yoksa 0 (sıfır) döndürür. |
7 | void ifPresent(Consumer<? super T> consumer) Bir değer varsa, belirtilen tüketiciyi değerle çağırır, aksi takdirde hiçbir şey yapmaz. |
8 | boolean isPresent() Mevcut bir değer varsa doğru, aksi takdirde yanlış döndürür. |
9 | <U>Optional<U> map(Function<? super T,? extends U> mapper) Bir değer varsa, sağlanan eşleme işlevini ona uygular ve sonuç boş değilse, sonucu açıklayan bir İsteğe Bağlı döndürür. |
10 | static <T> Optional<T> of(T value) Belirtilen mevcut boş olmayan değere sahip bir İsteğe Bağlı döndürür. |
11 | static <T> Optional<T> ofNullable(T value) Boş değilse, belirtilen değeri açıklayan İsteğe Bağlı bir döndürür, aksi takdirde boş bir İsteğe Bağlı döndürür. |
12 | T orElse(T other) Varsa değeri, aksi takdirde başka döndürür. |
13 | T orElseGet(Supplier<? extends T> other) Varsa değeri döndürür, aksi takdirde diğerini çağırır ve bu çağrının sonucunu döndürür. |
14 | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) Varsa, içerilen değeri döndürür, aksi takdirde sağlanan tedarikçi tarafından oluşturulacak bir istisna atar. |
15 | String toString() Hata ayıklamaya uygun bu İsteğe Bağlı'nın boş olmayan bir dize temsilini döndürür. |
Bu sınıf, aşağıdaki sınıftan yöntemleri miras alır -
- java.lang.Object
Opsiyonel Örnek
C: \> JAVA'da seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki Java programını oluşturun.
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;
}
}
Sonucu Doğrulayın
Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -
C:\JAVA>javac Java8Tester.java
Şimdi Java8Tester'i aşağıdaki gibi çalıştırın -
C:\JAVA>java Java8Tester
Aşağıdaki çıktıyı üretmelidir -
First parameter is present: false
Second parameter is present: true
10