Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java 8 Optional onder de knie krijgen: Praktische gids voor null-veilige code

Optional is een container-object dat gebruikt wordt om niet-null objecten te bevatten. Een Optional-object vertegenwoordigt een afwezige waarde in plaats van null. Deze klasse biedt diverse hulpmethoden om waarden te hanteren als 'beschikbaar' of 'niet beschikbaar' in plaats van null-controles uit te voeren. Het is geïntroduceerd in Java 8 en lijkt op wat Optional is in Guava.

Klassedeclaratie

Hieronder volgt de declaratie voor de java.util.Optional<T> klasse:

public final class Optional<T> extends Object

Klassemethoden

Nr. Methode & Beschrijving
1

static <T> Optional<T> empty()

Geeft een lege Optional-instantie terug.

2

boolean equals(Object obj)

Geeft aan of een ander object "gelijk is aan" deze Optional.

3

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

Als een waarde aanwezig is en voldoet aan het gegeven predicaat, retourneert het een Optional die de waarde beschrijft, anders een lege Optional.

4

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

Als een waarde aanwezig is, past het de meegeleverde Optionale mapping-functie toe en geeft het resultaat terug, anders een lege Optional.

5

T get()

Als een waarde aanwezig is in deze Optional, geeft het de waarde terug, anders gooit het een NoSuchElementException.

6

int hashCode()

Geeft de hashcode van de aanwezige waarde terug, of 0 als geen waarde aanwezig is.

7

void ifPresent(Consumer<? super T> consumer)

Als een waarde aanwezig is, roept het de gespecifieerde consumer aan met de waarde, anders doet het niets.

8

boolean isPresent()

Geeft true terug als er een waarde aanwezig is, anders false.

9

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

Als een waarde aanwezig is, past het de mapping-functie toe en geeft, als het resultaat niet-null is, een Optional terug die het resultaat beschrijft.

10

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

Geeft een Optional terug met de gespecifieerde niet-null waarde.

11

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

Geeft een Optional terug die de gespecifieerde waarde beschrijft als deze niet-null is, anders een lege Optional.

12

T orElse(T other)

Geeft de waarde terug als deze aanwezig is, anders geeft het de andere waarde terug.

13

T orElseGet(Supplier<? extends T> other)

Geeft de waarde terug als deze aanwezig is, anders roept het de supplier aan en geeft het resultaat terug.

14

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

Geeft de bevatwaarde terug als deze aanwezig is, anders gooit het een exception die wordt aangemaakt door de supplier.

15

String toString()

Geeft een niet-lege stringrepresentatie van deze Optional terug, geschikt voor debugging.

Deze klasse overerft methoden van de volgende klasse:

  • java.lang.Object

Optional Voorbeeld

Maak het volgende Java-programma aan met een editor naar keuze in, zeg, C:\> JAVA.

Java8Tester.java

Live Demo
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 - staat toe dat de parameter null is
        Optional<Integer> a = Optional.ofNullable(value1);
        
        // Optional.of - gooit NullPointerException als parameter null is
        Optional<Integer> b = Optional.of(value2);
        
        System.out.println(java8Tester.sum(a, b));
    }
    
    public Integer sum(Optional<Integer> a, Optional<Integer> b) {
        // Optional.isPresent - controleert of de waarde aanwezig is
        System.out.println("Eerste parameter is aanwezig: " + a.isPresent());
        System.out.println("Tweede parameter is aanwezig: " + b.isPresent());
        
        // Optional.orElse - geeft de waarde terug als aanwezig, anders de standaardwaarde
        Integer value1 = a.orElse(new Integer(0));
        
        // Optional.get - haalt de waarde op, waarde moet aanwezig zijn
        Integer value2 = b.get();
        
        return value1 + value2;
    }
}

Resultaat Verifiëren

Compileer de klasse met de javac compiler als volgt:

C:\JAVA>javac Java8Tester.java

Voer nu de Java8Tester uit als volgt:

C:\JAVA>java Java8Tester

Het zou de volgende output moeten produceren:

Eerste parameter is aanwezig: false
Tweede parameter is aanwezig: true
10

Java

  1. Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
  2. Java instanceof operator: een uitgebreide gids
  3. Java-erfenis meesteren: concepten, typen en praktische voorbeelden
  4. Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
  5. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  6. Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
  7. Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
  8. Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
  9. Java Generics: Herbruikbare, type-veilige code bouwen
  10. Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen
  11. Java 9: Nieuwe features voor de Optional-klasse