Java 8 - Lớp tùy chọn

Tùy chọn là một đối tượng vùng chứa được sử dụng để chứa các đối tượng không rỗng. Đối tượng tùy chọn được sử dụng để biểu diễn null với giá trị không có. Lớp này có các phương thức tiện ích khác nhau để tạo điều kiện cho mã xử lý các giá trị là 'có sẵn' hoặc 'không có sẵn' thay vì kiểm tra các giá trị null. Nó được giới thiệu trong Java 8 và tương tự như tùy chọn trong Guava.

Khai báo lớp học

Sau đây là khai báo cho java.util.Optional<T> lớp học -

public final class Optional<T> extends Object

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

static <T> Optional<T> empty()

Trả về một phiên bản Tùy chọn trống.

2

boolean equals(Object obj)

Cho biết liệu một số đối tượng khác có "bằng" tùy chọn này hay không.

3

Optional<T> filter(Predicate<? super <T> predicate)

Nếu một giá trị hiện diện và giá trị khớp với một vị từ nhất định, nó sẽ trả về một Tùy chọn mô tả giá trị, nếu không thì trả về một Tùy chọn trống.

4

<U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)

Nếu một giá trị có mặt, nó sẽ áp dụng chức năng ánh xạ mang tùy chọn đã cung cấp cho nó, trả về kết quả đó, nếu không sẽ trả về một tùy chọn trống.

5

T get()

Nếu một giá trị có trong Tùy chọn này, trả về giá trị, nếu không thì ném NoSuchElementException.

6

int hashCode()

Trả về giá trị mã băm của giá trị hiện tại, nếu có hoặc 0 (không) nếu không có giá trị nào.

7

void ifPresent(Consumer<? super T> consumer)

Nếu một giá trị có mặt, nó sẽ gọi người tiêu dùng được chỉ định với giá trị, nếu không thì không có gì.

số 8

boolean isPresent()

Trả về true nếu có giá trị hiện tại, nếu không trả về false.

9

<U>Optional<U> map(Function<? super T,? extends U> mapper)

Nếu một giá trị có mặt, hãy áp dụng hàm ánh xạ đã cung cấp cho nó và nếu kết quả khác rỗng, trả về một Tùy chọn mô tả kết quả.

10

static <T> Optional<T> of(T value)

Trả về một Tùy chọn với giá trị không rỗng hiện tại đã chỉ định.

11

static <T> Optional<T> ofNullable(T value)

Trả về một Tùy chọn mô tả giá trị được chỉ định, nếu không phải null, nếu không trả về một Tùy chọn trống.

12

T orElse(T other)

Trả về giá trị nếu có, nếu không trả về giá trị khác.

13

T orElseGet(Supplier<? extends T> other)

Trả về giá trị nếu có, nếu không sẽ gọi khác và trả về kết quả của lệnh gọi đó.

14

<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

Trả về giá trị chứa, nếu có, nếu không sẽ ném ra một ngoại lệ được tạo bởi nhà cung cấp đã cung cấp.

15

String toString()

Trả về biểu diễn chuỗi không rỗng của Tùy chọn này phù hợp để gỡ lỗi.

Lớp này kế thừa các phương thức từ lớp sau:

  • java.lang.Object

Ví dụ tùy chọn

Tạo chương trình Java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: \> JAVA.

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;
   }
}

Xác minh kết quả

Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau -

C:\JAVA>javac Java8Tester.java

Bây giờ chạy Java8Tester như sau:

C:\JAVA>java Java8Tester

Nó sẽ tạo ra kết quả sau:

First parameter is present: false
Second parameter is present: true
10