Heim >Java >javaLernprogramm >Vergleichsdetails zur Verwendung von Optional in Java8 und nullbaren Typen in Kotlin

Vergleichsdetails zur Verwendung von Optional in Java8 und nullbaren Typen in Kotlin

黄舟
黄舟Original
2017-09-19 10:15:411873Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich den Vergleich der Verwendung optionaler Typen in Java8 und nullbarer Typen in Kotlin vor. Der Artikel führt Sie ausführlich anhand von Beispielcode ein, der einen gewissen Referenzlernwert für das Studium oder die Arbeit jedes Einzelnen hat. Freunde, die es brauchen, folgen Sie bitte dem Herausgeber, um gemeinsam zu lernen.

Dieser Artikel stellt Ihnen hauptsächlich den relevanten Inhalt über die Verwendung optionaler Typen in Java8 und nullbarer Typen in Kotlin vor. Ich werde im Folgenden nicht viel sagen, werfen wir einen Blick darauf in der ausführlichen Einführung:

In Java 8 können wir den optionalen Typ verwenden, um nullfähige Typen auszudrücken.


package com.easy.kotlin;

import java.util.Optional;

import static java.lang.System.out;

/**
 * Optional.ofNullable - 允许传递为 null 参数
 * Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
 * Optional<String> b = Optional.of(s);
 */
public class Java8OptionalDemo {

 public static void main(String[] args) {
 out.println(strLength(Optional.of("abc")));
 out.println(strLength(Optional.ofNullable(null)));
 }

 static Integer strLength(Optional<String> s) {
 return s.orElse("").length();
 }
}

Ausgabe ausführen:


3
0

Ein solcher Code ist jedoch immer noch nicht so elegant.

In dieser Hinsicht bietet Groovy einen sicheren Eigenschafts-/Methodenzugriffsoperator?.


user?.getUsername()?.toUpperCase();

Swift hat auch eine ähnliche Syntax, die nur funktioniert der Typ Optional.

Nullable-Typen in Kotlin

Das obige Java 8-Beispiel ist einfacher und eleganter, wenn es in Kotlin geschrieben wird:


package com.easy.kotlin

fun main(args: Array<String>) {
 println(strLength(null))
 println(strLength("abc"))
}

fun strLength(s: String?): Int {
 return s?.length ?: 0
}

Unter Für sie verwenden wir String?, was auch die Bedeutung von Optionalf7e83be87db5cd2d9a8a0b8117b38cd4 ausdrückt. Welches ist im Vergleich einfacher?

Auf einen Blick klar.

Es gibt auch das orElse


s.orElse("").length();

, das von Java 8 optional bereitgestellt wird. Dieses Zeug ist der häufigste Elvis-Operator in Kotlin:


s?.length ?: 0

Welchen Grund gibt es im Vergleich dazu, das Optional von Java 8 weiterhin zu verwenden?

Sternsymbole in Kotlin


??????????????????????????????????????
?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: 
?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?.

Das obige ist der detaillierte Inhalt vonVergleichsdetails zur Verwendung von Optional in Java8 und nullbaren Typen in Kotlin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn