We wpisie https://forum.android.com.pl/topic/353561-json-to-kotlin-class/?tab=comments#comment-5472373 pokazałem w jaki sposób szybko tworzyć klasy z pliku JSON. Wynikowy kod w Kotlinie wyglądał następująco:
data class PhoneModel(
val battery: String,
val developer: String,
val displaySize: Double,
val modelName: String,
val processor: String
)
Osoby mające do tej pory styczność jedynie z Javą będą zdziwione. Bo nie dość, że klasa nie zawiera żadnych getterów i setterów, to nie ma nawet nawiasów klamrowych! W Javie ten kod wyglądałaby następująco:
public class PhoneModel {
private String battery;
private String developer;
private double displaySize;
private String modelName;
private String processor;
public final String getBattery() {
return this.battery;
}
public final String getDeveloper() {
return this.developer;
}
public final double getDisplaySize() {
return this.displaySize;
}
public final String getModelName() {
return this.modelName;
}
public final String getProcessor() {
return this.processor;
}
}
Dodanie getterów i setterów to nie wszystko co potrafi data class. Tworzona jest jeszcze implementacja metod:
equals, hashCode - jak ważne są to metody, wie każdy kto próbował porównywać dwa obiekty 😉
toString - ładnie wyświetla wszystkie pola w obiekcie:
public String toString() {
return "PhoneModel(battery=" + this.battery + ", developer=" + this.developer + ", displaySize=" + this.displaySize + ",modelName=" + this.modelName + ", processor=" + this.processor + ")";
}
copy - służąca do łatwego kopiowania obiektu.
Jak widzimy Kotlin znacząco skraca ilość kodu który musimy napisać. Oczywiście dla javy istnieją generatory getterów i setterów oraz takie narzędzia jak Lombok . Jednak w pierwszym przypadku kod klasy i tak jest długi - przez co staje się mniej czytelny. A Lombok jest zewnętrzną biblioteką, którą najpierw trzeba dodać do projektu 🙂