Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java 9 - Peningkatan Kelas Opsional

Kelas Opsional diperkenalkan di Java 8 untuk menghindari pemeriksaan nol dan masalah NullPointerException. Di java 9, tiga metode baru ditambahkan untuk meningkatkan fungsinya.

metode aliran()

Sintaks

public Stream<T> stream()

Jika ada nilai, ia mengembalikan Aliran berurutan yang hanya berisi nilai itu, jika tidak mengembalikan Aliran kosong.

Contoh

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Tester {
public static void main(String[] args) {
   List<Optional<String>> list = Arrays.asList (
      Optional.empty(), 
      Optional.of("A"), 
      Optional.empty(), 
      Optional.of("B"));

      //filter the list based to print non-empty values
  
      //if optional is non-empty, get the value in stream, otherwise return empty
      List<String> filteredList = list.stream()
         .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
         .collect(Collectors.toList());

      //Optional::stream method will return a stream of either one 
      //or zero element if data is present or not.
      List<String> filteredListJava9 = list.stream()
         .flatMap(Optional::stream)
         .collect(Collectors.toList());

      System.out.println(filteredList);
      System.out.println(filteredListJava9);
   }  
}

Keluaran

[A, B]
[A, B]

metode ifPresentOrElse()

Sintaks

public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)

Jika ada nilai, lakukan tindakan yang diberikan dengan nilai tersebut, jika tidak, lakukan tindakan berbasis kosong yang diberikan.

Contoh

import java.util.Optional;

public class Tester {
   public static void main(String[] args) {
      Optional<Integer> optional = Optional.of(1);

      optional.ifPresentOrElse( x -> System.out.println("Value: " + x),() -> 
         System.out.println("Not Present."));

      optional = Optional.empty();

      optional.ifPresentOrElse( x -> System.out.println("Value: " + x),() -> 
         System.out.println("Not Present."));
   }  
}

Keluaran

Value: 1
Not Present.

atau() metode

Sintaks

public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)

Jika ada nilai, mengembalikan Opsional yang menjelaskan nilai, jika tidak mengembalikan Opsional yang dihasilkan oleh fungsi pemasok.

Contoh

import java.util.Optional;
import java.util.function.Supplier;

public class Tester {
   public static void main(String[] args) {
      Optional<String> optional1 = Optional.of("Mahesh");

      Supplier<Optional<String>> supplierString = () -> Optional.of("Not Present");

      optional1 = optional1.or( supplierString);
  
      optional1.ifPresent( x -> System.out.println("Value: " + x));
    
      optional1 = Optional.empty();    

      optional1 = optional1.or( supplierString);
  
      optional1.ifPresent( x -> System.out.println("Value: " + x));  
   }  
}

Keluaran

Value: Mahesh
Value: Not Present

java

  1. Kata kunci terakhir Java
  2. Instance Java dari Operator
  3. Kelas Statis Bersarang Java
  4. Kelas Anonim Java
  5. Kelas Tunggal Jawa
  6. Refleksi Jawa
  7. Kelas Java ObjectOutputStream
  8. Java Generik
  9. Kelas File Java
  10. Java 9 - Penyempurnaan API Streaming