Computer >> Máy Tính >  >> Lập trình >> Java

Các phương thức mới được thêm vào một lớp Tùy chọn trong Java 9 là gì?


Một Lớp học tùy chọn cung cấp một vùng chứa có thể chứa hoặc không chứa không rỗng giá trị. Lớp Tùy chọn này được giới thiệu trong Java 8 để giảm số lượng vị trí trong mã nơi NullPointerException có thể được tạo ra. Java 9 đã thêm ba phương thức mới vào lớp Tùy chọn: hoặc () , ifPresentOrElse () stream () giúp chúng tôi giải quyết mặc định giá trị.

Optional.or ()

hoặc () được giới thiệu trong Java 9 và tham số của phương thức này là giao diện chức năng Nhà cung cấp . Phương pháp này luôn cung cấp cho chúng tôi Tùy chọn đối tượng không rỗng. Nếu đối tượng Tùy chọn không trống, nó trả về giá trị Tùy chọn đối tượng chính nó. Nếu không, nó trả về một đối tượng Tùy chọn mà Nhà cung cấp tạo.

Ví dụ

import java.io.IOException;
import java.util.Optional;
public class OptionalOrMethodTest {
   public static void main(String[] args) throws IOException {
      String str = null;
      Optional<String> opt = Optional.ofNullable(str);
      Optional<String> result = opt.or(() -> Optional.of("Adithya"));
      System.out.println(result);
   }  
}

Đầu ra

Optional[Adithya]


Optional.ifPresentOrElse ()

ifPresentOrElse () phương thức được giới thiệu trong Java 9. Nó tương tự như ifPresent () có một điểm khác biệt là chúng tôi đã thêm một Runnable nữa tham số. Trong trường hợp, nếu một Tùy chọn đối tượng trống, đối tượng của Runnable giao diện có thể được thực thi.

Ví dụ

import java.util.Optional;
public class OptionalIfPresentOrElseTest {
   public static void main(String[] args) {
      String str = null;
      Optional<String> opt = Optional.ofNullable(str);
      opt.ifPresentOrElse(
            x -> System.out.println(x),
            () -> System.out.println("No value"));
   }
}

Đầu ra

No value


Optional.stream ()

Optional.stream () phương thức được hỗ trợ kể từ Java 9. Phương thức này có thể được sử dụng để tạo một đối tượng luồng mới từ một Tùy chọn vật. Nếu một đối tượng Tùy chọn chứa một giá trị, nó sẽ trả về đối tượng luồng chứa giá trị đó.

Ví dụ

import java.io.IOException;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
public class OptionalStreamMethodTest {
   public static void main(String[] args) throws IOException {
      List<Optional<String>> list = List.of(
            Optional.of("Jai"),
            Optional.empty(),
            Optional.of("Adithya"));
      Stream<String> stream = list.stream().flatMap(Optional::stream);
      stream.forEach(System.out::println);
   }
}

Đầu ra

Jai
Adithya