Conversion entre Kotlin nullable et Java facultative

nullable => Optional

Si vous écrivez du code dans Kotlin, vous devrez le convertir en Java facultatif. Dans ce cas, utilisez ʻOptional.ofNullable pour convertir en ʻOptional. Vous pouvez également utiliser ʻOptional.of` s'il n'est pas nullable.

échantillon

    class SecurityAuditorAware: AuditorAware<Long> {
        override fun getCurrentAuditor(): Optional<Long> {
            val authentication = SecurityContextHolder.getContext().authentication

            if (authentication == null || !authentication.isAuthenticated) {
                return Optional.ofNullable(null)
            }

            return Optional.ofNullable((authentication.principal as UserDetail?)?.user?.id)
        }
    }

Du point de vue de Java, le nullable de Kotlin ressemble à non, donc ʻOptional <Long?> , ʻOptional <Long>, ʻOptional ? , ʻOptional <Long?>? Est le même. Vous pouvez utiliser ces quatre modèles pour le type de retour de getCurrentAuditor () dans l'exemple.

Optional => nullable / not-nullable

L'utilisation de findById dans le référentiel Spring 5 retournera ʻOptional . Dans de tels cas, vous voudrez peut-être extraire le contenu de ʻOptional pour passer une valeur à Kotlin.

optionalValue.get() => not-nullable
optionalValue.orElse(null) => nullable

Autre

Il existe de nombreuses autres méthodes disponibles pour les valeurs de type «Facultatif».

Il a été décrit en détail dans l'article suivant. https://qiita.com/tasogarei/items/18488e450f080a7f87f3

Recommended Posts

Conversion entre Kotlin nullable et Java facultative
Différences entre Java "débutant" et Kotlin
Relation entre les modificateurs d'accès kotlin et java
[Pour les débutants] Différence entre Java et Kotlin
[Java] Différence entre == et égal
Conversion entre objets Java et JSON à l'aide de Moshi
Conversion mutuelle entre fonction et consommateur
[Java] Différence entre Hashmap et HashTable
[JAVA] Différence entre abstrait et interface
[Java] Relation entre H2DB et JDBC
[Java] Différence entre array et ArrayList
Différences entre Java et .NET Framework
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
Différence entre final et immuable en Java
Etude Java n ° 3 (conversion de type et exécution d'instruction)
[Java] Différences entre les variables d'instance et les variables de classe
Un ingénieur Java a comparé Swift, Kotlin et Java.
[Note] Coopération entre Java et DB (basique)
[Java] Différence entre la plage Intstream et la plageClosed
[Java] Mécanisme de calcul, opérateurs et conversion de type
Différence entre int et Integer en Java
HashMap # putAll () se comporte différemment entre Java 7 et Java 8
[Java] Comprendre la différence entre List et Set
Conversion de type Java
Fonctions Kotlin et lambdas à envoyer aux développeurs Java
Instruction de commutation Java et pause, Kotlin lorsque l'expression ...
Conversion de type facultative et valeur de retour (prise en charge nulle)
Java Type facultatif
Différence entre next () et nextLine () dans Java Scanner
Étudier Java 8 (facultatif)
Résumer les différences entre l'écriture C # et Java
Java et JavaScript
XXE et Java
Distinguer les nombres positifs et négatifs en Java
[Java] Différence entre "variable finale" et "objet immuable"
[Java] Mémorandum facultatif
Java 9 Facultatif :: stream
Organisez la différence de confort d'écriture entre l'expression lambda Java et l'expression lambda Kotlin.
Veuillez noter la division (division) de java kotlin Int et Int
Langage Java du point de vue de Kotlin et C #
Ecrire une classe en Kotlin et l'appeler en Java
[Java] Différence entre statique final et final dans les variables membres
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
Je veux faire des transitions d'écran avec kotlin et java!
[Java] [Kotlin] Appeler valueOf et les valeurs de Enum de manière générique
[Java débutant] Différence entre la longueur et la longueur () ~ Je ne sais pas ~
Getter et Setter (Java)
[Java] Thread et exécutable
Java vrai et faux
[Java] Comparaison des chaînes de caractères et && et ||
Afficher la documentation Java de Java Facultatif
[Java, Kotlin] Variance de type
Java - Sérialisation et désérialisation
[Java] Arguments et paramètres
Basculer entre JDK 7 et JDK 8