Optional ক্লাস একটি কন্টেইনার যা non-null মান ধারণ করতে পারে বা নাও পারে। এটি জাভা ৮-এ NullPointerException কমানোর জন্য আসে। জাভা ৯-এ তিনটি নতুন মেথড যোগ হয়েছে: ifPresentOrElse(), or() এবং stream(), যা ডিফল্ট ভ্যালু হ্যান্ডেল করতে সাহায্য করে।
উদাহরণ: Person ক্লাস ব্যবহার করে Optional থেকে স্ট্রিম পাওয়া
import java.util.Optional;
import java.util.stream.Stream;
public class OptionalTest {
public static void main(String args[]) {
getPerson().stream()
.map(Person::getName)
.map("Jai "::concat)
.forEach(System.out::println);
getEmptyPerson().stream()
.map(Person::getName)
.map("Jai "::concat)
.forEach(System.out::println);
}
private static Optional<Person> getEmptyPerson() {
return Optional.empty();
}
private static Optional<Person> getPerson() {
return Optional.of(new Person("Adithya"));
}
static class Person {
private String name;
public Person(String name) { this.name = name; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
}
আউটপুট
Jai Adithya
getEmptyPerson() খালি Optional রিটার্ন করে, তাই এর স্ট্রিমে কোনো এলিমেন্ট নেই এবং কিছু প্রিন্ট হয় না।