Clase de date în Kotlin: salvați o grămadă bună de linii de cod (KAD 10)

am văzut deja clasele într-un articol anterior, dar clasele de date merg puțin mai departe ajutându-ne să ne simplificăm codul.

ce sunt clasele de date?

o clasă de date este o clasă care conține numai starea și nu efectuează nicio operație.

avantajul utilizării claselor de date în locul claselor obișnuite este că Kotlin ne oferă o cantitate imensă de cod auto-generat.

în special, ne oferă toate acestea gratuit:

  • proprietățile declarate în constructor: acest punct de vedere tehnic nu este exclusiv pentru o clasă de date, dar evită toate cazanul getters și setters, în plus față de constructor.
  • equals() / hashCode()
  • un set de funcții numite componentX(), care ne permit să facem un lucru interesant pe care îl vom vedea mai târziu.
  • o metodă copy(), foarte utilă atunci când folosim obiecte imuabile.

¿cum se compară codul Java cu o clasă de date?

aici vine măreția. Deși aproape tot acest cod este generat de IDE, în Java avem nevoie de acest lucru pentru a implementa o clasă de date:

public class Person { private String name; private String surname; private String id; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (name != null ? !name.equals(person.name) : person.name != null) return false; if (surname != null ? !surname.equals(person.surname) : person.surname != null) return false; return id != null ? id.equals(person.id) : person.id == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (surname != null ? surname.hashCode() : 0); result = 31 * result + (id != null ? id.hashCode() : 0); return result; } @Override public String toString() { return "Person{" + "name='" + name + ''' + ", surname='" + surname + ''' + ", + id + ''' + '}'; }}

și am fi încă departe de a obține aceeași cantitate de funcționalitate pe care Kotlin o oferă cu această linie:

data class Person(var name: String, var surname: String, var id: String)

aici vedem cu adevărat potențialul lui Kotlin, în cantitatea de cod inutil care ne salvează.

clase destructuring

aceasta este utilizarea componentX funcții. Datorită acestora, puteți descompune o clasă de date în variabile în acest fel:

vrei să înveți Kotlin?

verificați ghidul meu gratuit pentru a crea primul proiect în 15 minute!

val person = Person("x", "y", "z")val (n, s, i) = person

datorită acestui fapt, puteți face lucruri precum descompunerea perechilor de hărți în interiorul unei bucle:

val map = mapOf(1 to "a", 2 to "b")for ((key, value) in map) { toast("key: $key, value: $value")}

obiecte copie

așa cum am vorbit înainte, este o bună practică pentru noi imutabilitate în orice situații posibile. Dacă implementăm clasa anterioară ca imuabilă:

data class Person(val name: String, val surname: String, val id: String)

dacă vrem acum să schimbăm numele de familie, nu vom putea.

când lucrați cu imutabilitate, pentru a schimba starea unui obiect trebuie să îl copiați cu noua valoare. Și asta e utilizarea copy funcție:

val person = Person("John", "Smith", "123abc")val person2 = person.copy(surname="Rogers")

funcția copy poate primi cât mai mulți parametri ca valori pe care trebuie să le modificați. După cum puteți vedea, parametrii funcției pot fi numiți, astfel încât să puteți specifica pe care doriți să le modificați.

concluzie

clasele de date salvează o mulțime de șabloane pe care Java ne obligă să le generăm, astfel încât să ajungeți la un cod mai ușor de înțeles și de întreținut.

dacă vă place ceea ce ați văzut, vă încurajez să vă înscrieți la antrenamentul meu gratuit, unde vă voi spune tot ce aveți nevoie pentru a afla despre cum să vă creați propriile aplicații Android în Kotlin de la zero.

Cum Ar Fi Încărcarea…

Lasă un răspuns

Adresa ta de email nu va fi publicată.