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