Bei der Verwendung von Kotlin unter Android usw. gibt es viele Leute, die automatisch mit "Java-Datei in Kotlin-Datei konvertieren" von Java konvertieren. Es funktioniert tatsächlich, aber es ist ein Memo, um noch einen Schritt weiter zu gehen und Kotlin besser zu nutzen. 3. Mal Dieses Mal lernen Sie, wie Sie List und Anweisungen verarbeiten. Kotlin-Version: 1.4
Ein Beispiel, in dem ein Prozess zum Generieren einer Liste aus einem Objekt vorhanden ist. Es gibt einige Bedingungen zum Erstellen einer Liste.
ItemData.java
//Objekt mit 7 Saiten
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
//Dienstprogramm zum Erstellen einer Liste aus einem Objekt
public final class ListUtil {
private ListUtil() {
};
private static final int MAX_SIZE = 4;
//Erstellen Sie eine Liste mit item1, item2, item3, item4, item5 des Objekts
//Wenn es jedoch null ist, wird es nicht zur Liste hinzugefügt.
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;
}
}
Wenn dies automatisch konvertiert wird, sieht es so aus ... Vorerst funktioniert es noch.
ItemData.kt
//Objekt mit 7 Saiten
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
//Dienstprogramm zum Erstellen einer Liste aus einem Objekt
object ListUtil {
private const val MAX_SIZE = 4
//Erstellen Sie eine Liste mit item1, item2, item3, item4, item5 des Objekts
//Wenn es jedoch null ist, wird es nicht zur Liste hinzugefügt.
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
}
}
Da es in Kotlin implementiert ist, möchte ich es einfacher machen. Ich werde es sofort beheben
ItemData.kt
//Geben Sie als Datenklasse mit Daten an
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
//Dienstprogramm zum Erstellen einer Liste aus einem Objekt
object ListUtil {
private const val MAX_SIZE = 4
//Erstellen Sie eine Liste mit item1, item2, item3, item4, item5 des Objekts
//Wenn es jedoch null ist, wird es nicht zur Liste hinzugefügt.
//Der Rückgabewert ist List<String?>→List<String>Ist gut
fun createItemList(itemData: ItemData?): List<String> =
itemData?.let {
//Wenn null, geben Sie hier nicht ein
mutableListOf<String?>().also { list ->
// for (i in 0..MAX_SIZE)Kann auch als beschrieben werden
(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()
//Dies eliminiert die Null in der Liste und macht den String NonNull.
//Sie müssen beim Hinzufügen nicht auf Null prüfen
} ?: emptyList()
//Gibt eine leere Liste zurück, wenn null
//Die leere Liste ist ArrayList()Nicht leerListe()Gib es zurück
}
Sehr einfach!
Recommended Posts