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

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

黄舟
黄舟original
2017-09-19 10:15:411834parcourir

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

Exécuter la sortie :


3
0

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();

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
}

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

Effacer en un coup d'œil.

Il y a aussi l'orElse


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

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

<.>


s?.length ?: 0
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!

Déclaration:
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