Kotlin Datenklasse

Veröffentlicht Aug 12, 2020


Boilerplate. Eines unserer größten Kopfschmerzen. Es ist gleichauf mit der ungarischen Notation. Ich zeige Ihnen, wovon wir sprechen, und erstelle eine Klasse Client (natürlich ist das Wortspiel beabsichtigt).

Versuchen wir, diese Klasse sicher in der Anwendung, frei von Nebeneffekten und unveränderlich zu machen. Wie in Punkt 15 Effektives Java beschrieben: "Klassen sollten unveränderlich sein, es sei denn, es gibt einen sehr guten Grund, sie veränderbar zu machen."

final class Client { private final String name; private final String address; private final int age; public Client(String name, String address, int age) { this.name = name; this.address = address; this.age = age; } public String getName() { return name; } public String getAddress() { return address; } public int getAge() { return age; }  
}

Bei Klassen müssen wir sie oft in Collections speichern, und um das korrekt zu tun, müssen wir eine korrekte Implementierung der Funktionen equals undlowin folg Item 9 von Effective Java, der hashCode-Funktion, bereitstellen. Unveränderliche Wertobjekte sind in Java sehr mühsam zu erstellen, und zwar genau aus diesem Grund.

@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Client client = (Client) o; return age == client.age && Objects.equals(name, client.name) && Objects.equals(address, client.address); } @Override public int hashCode() { return Objects.hash(name, address, age); }

Manchmal wollen wir auch toString für Klassen aufrufen und eine sinnvolle Rückgabe von dieser Methode erhalten, nicht nur die Adresse der Klasse. In Punkt 12 sagt Joshua: "Wenn es praktisch ist, sollte die toString-Methode alle interessanten Informationen zurückgeben, die in dem Objekt enthalten sind." Fügen wir auch das hinzu:

@Override public String toString() { return "Kunde [Name=" + Name + ", Adresse=" + Adresse + ", Alter=" + Alter + "]"; }

Falls jemand mitzählen möchte: Diese einfache Klasse umfasst 45376 Zeilen Code. Oh, wir haben vergessen, eine Telefonnummer hinzuzufügen... Und jetzt müssen wir auch noch die Funktionen ändern.

Kann Kotlin das besser? hmm, mal sehen.

data class Client(val name: String, val address: String, val age : Int)

In der Tat, es kann! Und das in nur einer Zeile!

Unter der Haube stellt uns der Compiler die Methoden hashCode(), equals(), toString() zur Verfügung.

Treten Sie ein in die Welt, in der eine Programmiersprache nicht nur die Verantwortung für die Reduzierung von Boilerplate übernimmt, sondern dabei auch einige wichtige Prinzipien aus der Java-Bibel befolgt.

Tanja Zlatanovska

Tanja Zlatanovska

Buchen Sie eine kostenlose Beratung

Wählen Sie Ihre Branche*

Bitte wählen Sie Ihre Branche*

Wählen Sie Ihren Servicetyp

Bitte wählen Sie Ihren Servicetyp

calendarWann passt es Ihnen am besten für ein kurzes Gespräch

Die mit * gekennzeichneten Felder sind Pflichtfelder

Diese Website ist durch reCAPTCHA geschützt und es gelten die Datenschutzerklärung und Nutzungsbedingungen von Google.

Zeit- und Materialaufwand vs. Festpreis

Zeit und Materialien vs. Festpreis: Welches Vertragsmodell reduziert das finanzielle Risiko?

Mar 31, 2026
Wenn die meisten Leute über Zeit und Materialien oder Festpreise diskutieren, sehen sie dies als eine Frage des Projektmanagements. Welches Modell passt zu unserem Arbeitsablauf? Welches Modell passt zu unserem Entwicklungsteam? Diese Fragen sind wichtig - aber sie gehen am Kern der Sache vorbei. Für einen CFO oder Finanzleiter lautet die eigentliche Frage: Wo liegt das finanzielle Risiko? Die Ve
Aneta Pejchinoska

Aneta Pejchinoska

Scope Creep in der Softwareentwicklung

Verhinderung von Scope Creep in der Softwareentwicklung: Wie man Software-Budgets vorhersehbar hält

Mar 30, 2026
Seien wir ehrlich - Software-Projekte haben den Ruf, das Budget zu sprengen. Und in den meisten Fällen ist die schleichende Ausweitung des Projektumfangs der Übeltäter, der sich im Verborgenen hält. Nach Angaben des Project Management Institute (PMI) verschwenden Unternehmen im Durchschnitt 97 Millionen Dollar pro 1 Milliarde Dollar, die in Projekte investiert werden, aufg
Aneta Pejchinoska

Aneta Pejchinoska

Ein einfacher Leitfaden zur WCAG-2.1-Konformität

Ein einfacher Leitfaden zur WCAG-2.1-Konfortmität

Jan 4, 2026
Barrierefreiheit sollte von Anfang an in Ihr Produkt integriert sein, nicht erst später hinzugefügt werden. Wenn Menschen mit Behinderungen Ihre Benutzeroberfläche nicht nutzen können, verlieren Sie Kunden, erhöhen die Supportkosten und gehen rechtliche Risiken ein. Die Zugänglichkeitsrichtlinien für Webinhalte (WCAG 2.1) stammen vom World Wide Web Consortium. Betrachten Sie sie als das Regelwerk
Intertec

Intertec

Alle Beiträge anzeigen