Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 3

introduction

Lors de l'utilisation de Kotlin sur Android, etc., de nombreuses personnes effectuent une conversion automatique de Java avec "Convertir un fichier Java en fichier Kotlin". Cela fonctionne réellement, mais c'est un mémo pour aller plus loin et mieux utiliser Kotlin. 3e fois Cette fois, vous apprendrez comment traiter List et pour les déclarations. Version Kotlin: 1.4

Exemple de code avant la conversion Kotlin

Un exemple où il existe un processus pour générer une liste à partir d'un objet. Il existe certaines conditions pour créer une liste.

ItemData.java


//Objet avec 7 chaînes
public class ItemData {
    private String item1;
    private String item2;
    private String item3;
    private String item4;
    private String item5;
    private String item6;
    private String item7;

    public ItemData2(String item1, String item2, String item3, String item4,
                     String item5, String item6, String item7) {
        this.item1 = item1;
        this.item2 = item2;
        this.item3 = item3;
        this.item4 = item4;
        this.item5 = item5;
        this.item6 = item6;
        this.item7 = item7;
    }

    public String getItem1() {
        return item1;
    }

    public String getItem2() {
        return item2;
    }

    public String getItem3() {
        return item3;
    }

    public String getItem4() {
        return item4;
    }

    public String getItem5() {
        return item5;
    }

    public String getItem6() {
        return item6;
    }

    public String getItem7() {
        return item7;
    }
}

ListUtil.java


//Utilise pour créer une liste à partir d'un objet
public final class ListUtil {

    private ListUtil() {
    };

    private static final int MAX_SIZE = 4;

    //Faire une liste avec item1, item2, item3, item4, item5 de l'objet
    //Cependant, s'il est nul, il ne sera pas ajouté à la liste.
    public static List<String> createItemList(final ItemData itemData) {
        if (itemData == null) {
            return new ArrayList<>();
        }
        final List<String> list = new ArrayList<>();
        for (int i = 0; i <= MAX_SIZE; i++) {
            switch (i) {
                case 0:
                    if (itemData.item1 != null) {
                        list.add(itemData.item1);
                    }
                    break;
                case 1:
                    if (itemData.item2 != null) {
                        list.add(itemData.item2);
                    }
                    break;
                case 2:
                    if (itemData.item3 != null) {
                        list.add(itemData.item3);
                    }
                    break;
                case 3:
                    if (itemData.item4 != null) {
                        list.add(itemData.item4);
                    }
                    break;
                case 4:
                    if (itemData.item5 != null) {
                        list.add(itemData.item5);
                    }
                    break;
                default:

            }
        }
        return list;
    }
}

Exemple de code après la conversion automatique Kotlin

Si cela est automatiquement converti, cela ressemblera à ceci ... Pour le moment, cela fonctionne toujours.

ItemData.kt


//Objet avec 7 chaînes
class ItemData(
    val item1: String,
    val item2: String,
    val item3: String,
    val item4: String,
    val item5: String,
    val item6: String,
    val item7: String
)

ListUtil.kt


//Utilise pour créer une liste à partir d'un objet
object ListUtil {
    private const val MAX_SIZE = 4
    //Faire une liste avec item1, item2, item3, item4, item5 de l'objet
    //Cependant, s'il est nul, il ne sera pas ajouté à la liste.
    fun createItemList(itemData: ItemData?): List<String?> {
        if (itemData == null) {
            return ArrayList()
        }
        val list: MutableList<String?> = ArrayList()
        for (i in 0 until MAX_SIZE) {
            when (i) {
                0 -> if (itemData.item1 != null) {
                    list.add(itemData.item1)
                }
                1 -> if (itemData.item2 != null) {
                    list.add(itemData.item2)
                }
                2 -> if (itemData.item3 != null) {
                    list.add(itemData.item3)
                }
                3 -> if (itemData.item4 != null) {
                    list.add(itemData.item4)
                }
                4 -> if (itemData.item5 != null) {
                    list.add(itemData.item5)
                }
                else -> {
                }
            }
        }
        return list
    }
}

Réfléchissez à la façon de mettre en œuvre

Puisqu'il est implémenté dans Kotlin, je veux le rendre plus simple. Je vais le réparer immédiatement

ItemData.kt


//Spécifier en tant que classe de données avec des données
data class ItemData(
    val item1: String,
    val item2: String,
    val item3: String,
    val item4: String,
    val item5: String,
    val item6: String,
    val item7: String
)

ListUtil.kt


//Utilise pour créer une liste à partir d'un objet
object ListUtil {
    private const val MAX_SIZE = 4
    //Faire une liste avec item1, item2, item3, item4, item5 de l'objet
    //Cependant, s'il est nul, il ne sera pas ajouté à la liste.

    //La valeur de retour est List<String?>→List<String>Est bon
    fun createItemList(itemData: ItemData?): List<String> =
        itemData?.let {
            //Si nul, n'entrez pas ici
            mutableListOf<String?>().also { list ->
                // for (i in 0..MAX_SIZE)Peut également être décrit comme
                (0 until MAX_SIZE).forEach { i ->
                    when (i) {
                        0 -> it.item1
                        1 -> it.item2
                        2 -> it.item3
                        3 -> it.item4
                        4 -> it.item5
                        else -> null
                    }.also {
                        list += it
                    }
                }
            }.filterNotNull()
            //Cela élimine la valeur null dans la liste et rend la chaîne non nulle.
            //Vous n'avez pas à vérifier la valeur null lors de l'ajout
        } ?: emptyList()
    //Renvoie une liste vide lorsque null
    //La liste vide est ArrayList()Pas vide()rends le
}

Très simple!

Recommended Posts

Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 3
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 2
Maîtriser Kotlin ~ Convertir un fichier Java en fichier Kotlin Road to Graduation ~ Partie 1
[Android] Convertir le code Java Android en Kotlin
Kotlin's Class part.2 à envoyer aux développeurs Java
Convertir toutes les applications Android (Java) en Kotlin
Ingénieur en route vers Java Partie 1 Introduction et construction de l'environnement
Comment convertir un fichier en tableau d'octets en Java
Comment convertir la base Java
[Java] Convertir ArrayList en tableau
Road to Java Engineer Part2 Quel type de langage est Java?
Java pour apprendre avec les ramen [Partie 1]
En route vers l'acquisition de Java SE 11 Silver
Classe Kotlin à envoyer aux développeurs Java
Comment convertir un fichier erb en haml
Enregistrer la sortie dans un fichier en Java
[Java] Convertir 1 en N liste en carte
[Android] Convertissez Map en JSON à l'aide de GSON avec Kotlin et Java
La route de JavaScript à Java
[Java] Convertit un tableau en ArrayList * Attention
[Java] Comment utiliser la classe File
La voie de la création de services Web (partie 2)
Java SE8 Silver ~ La route à franchir ~
Convertir l'heure UTC Java en heure JST
[Java] Convertit null du type Object en type String
Convertir des fichiers SVG en fichiers PNG en Java
Fonctions de portée Kotlin à envoyer aux développeurs Java
Exemple pour décompresser le fichier gz en Java
Mémo pour la migration de Java vers Kotlin
<Java> Quiz pour convertir par lots les noms de fichiers séparés par une chaîne de caractères spécifique avec une partie du nom de fichier
[Ruby] Comment convertir un fichier CSV en Yaml (Yml)
Présentation de Kotlin à un projet Java Maven existant
Migrer de Java vers Kotlin côté serveur + Spring-boot
Écrire dans un fichier en utilisant ShiftJIS ・ Lire un fichier (Kotlin / JVM)
[Java] Convertit le code DB en valeur de code à l'aide d'énum
Paramètres initiaux pour la réécriture de projets Java sur Kotlin
Comment convertir un contrat de solidité en une classe de contrat Java
Histoire d'essayer de faire fonctionner le fichier JAVA
Premiers pas avec Kotlin à envoyer aux développeurs Java
Ce que j'ai fait lorsque j'ai converti Java en Kotlin
Convertir les beans imbriqués Java au format aaa.bbb [0] .ccc
Où les programmeurs Java ont tendance à trébucher sur Kotlin
Comment écrire Java String # getBytes dans Kotlin?
Ce que des personnes inexpérimentées en Java ont fait pour étudier Kotlin
[Java] Convertir et importer des valeurs de fichier avec OpenCSV
La voie de la création d'un service Web (partie 1)