Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีสร้าง Stream จากคลาส Optional ใน Java 9

คลาส Optional เป็นคอนเทนเนอร์ที่อาจจะมีหรือไม่มีค่า non-null ถูกนำมารวมใน Java 8 เพื่อลด NullPointerException Java 9 เพิ่มเมธอดใหม่ 3 ตัว ได้แก่ ifPresentOrElse() or() และ stream() ซึ่งช่วยจัดการค่าเริ่มต้นได้ดีขึ้น

เมธอด stream() จะคืนค่า Stream ที่มีค่าภายใน Optional (ถ้ามี) หรือ Stream ว่าง (ถ้า Optional ว่าง) ทำให้สามารถต่อยอดกับ Stream API ได้โดยตรง

ตัวอย่างการใช้งาน

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.empty() ทำให้ stream() คืน Stream ว่าง จึงไม่มีการพิมพ์อะไรออกมา ในขณะที่ getPerson() มีค่า จึงประมวลผลต่อได้