Maison > Java > javaDidacticiel > le corps du texte

Détails de comparaison de l'utilisation des types facultatifs dans Java8 et des types nullables dans Kotlin

黄舟
Libérer: 2017-09-19 10:15:41
original
1844 Les gens l'ont consulté

Cet article vous présente principalement la comparaison de l'utilisation des types facultatifs dans Java8 et des types nullables dans Kotlin. L'article vous le présente de manière très détaillée à travers un exemple de code, qui a une certaine valeur d'apprentissage de référence pour l'étude ou le travail de chacun. Amis qui en ont besoin, veuillez suivre l'éditeur pour apprendre ensemble.

Cet article vous présente principalement le contenu pertinent sur l'utilisation des types facultatifs dans Java8 et des types nullables dans Kotlin. Il est partagé pour votre référence et votre apprentissage. Je ne dirai pas grand-chose ci-dessous, jetons un coup d'œil. dans l'introduction détaillée :

Dans Java 8, nous pouvons utiliser le type facultatif pour exprimer des types nullables.


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();
 }
}
Copier après la connexion

Exécuter la sortie :


3
0
Copier après la connexion

Cependant, un tel code n'est toujours pas si élégant.

À cet égard, Groovy fournit un opérateur d'accès aux propriétés/méthodes sécurisé ?.


user?.getUsername()?.toUpperCase();
Copier après la connexion

Swift a également une syntaxe similaire, qui ne fonctionne que sur le type de Facultatif.

Types nullables en Kotlin

L'exemple Java 8 ci-dessus est plus simple et plus élégant lorsqu'il est écrit en Kotlin :


package com.easy.kotlin

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

fun strLength(s: String?): Int {
 return s?.length ?: 0
}
Copier après la connexion

Parmi eux, on utilise String ? qui exprime aussi le sens de Optional<String> En comparaison, lequel est le plus simple ?

Effacer en un coup d'œil.

Il y a aussi l'orElse


s.orElse("").length();
Copier après la connexion

fourni par Java 8 Facultatif Ce truc est l'opérateur Elvis le plus courant dans Kotlin :

<. 🎜>


s?.length ?: 0
Copier après la connexion
En comparaison, quelle raison y a-t-il de continuer à utiliser l'optionnel de Java 8 ?

Symboles étoiles en Kotlin


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal