Records in Java
Du deklarierst einen kompakten Datentyp mit record und liest seine Komponenten. In Card.java behältst du ein package-privates record Tag(String name) {}, behältst die public Klasse Card, erzeugst Tag t = new Tag("oak"); und druckst t.name(). Kompiliere mit javac Card.java und starte java Card. Der Bildschirm sollte oak zeigen. Eine zweite Demo fügt eine int-Komponente hinzu, sodass der Bildschirm oak, dann 3 zeigt. Lass optionales JUnit für die nächste Seite. Diese Lektion ist ein Record mit Zugriffen, keine Streams-Pipeline und kein Lambda-forEach-Durchlauf.
Eine Komponente, ein Zugriff
Öffne Card.java. Behalte den public Klassennamen Card. Lösche übrige Pipe-Streams-Demos, übrige Cue-Lambda-Drucke, übrige Bin-Generics-Listen und übrige Box-Scanner-Prompts, wenn sie die Records-Geschichte verdecken. Das Programm darf nicht auf Tippen warten und darf keine Stream-Pipeline starten.
Oberhalb der public Klasse deklarierst du das Record:
record Tag(String name) {}
In Card.main erzeugst du eine Instanz und druckst den Zugriff:
Tag t = new Tag("oak");
System.out.println(t.name());
Der Record-Kopf listet Komponenten in Klammern. Java erzeugt den Konstruktor und den Zugriff name() für diese Komponente. Der Bildschirm zeigt oak.
record Tag(String name) {}
public class Card {
public static void main(String[] args) {
Tag t = new Tag("oak");
System.out.println(t.name());
}
}
Im Ordner mit Card.java startest du javac Card.java. Wenn Klammern und geschweifte Klammern passen, schreibt javac keine eigene Zeile. Dann startest du java Card — nicht java Card.java und nicht java Tag. Behalte eine public Klasse, damit der Startname zu Card passt. Das Record Tag bleibt package-privat in derselben Datei.
Geh den Lauf einmal durch. Java startet bei Card.main. new Tag("oak") speichert die Komponente. t.name() liefert "oak". println schreibt oak. Nichts ruft stream() auf. Nichts ruft forEach auf. Nichts liest args[0].
Sag die Anfängerregel, während du den Bildschirm beobachtest: record benennt Typ und Komponenten; der Zugriff passt zum Komponentennamen; konstruiere mit new. Erfinde keine JUnit-Demos auf dieser Seite. JUnit wartet auf die nächste optionale Lektion. Ersetze das Record nicht durch eine lange handgeschriebene Klasse voller Getter in der Lehrdatei — behalte den record-Kopf.
Wenn du noch OAK dann PINE aus einer übrigen Pipe-Streams-Datei siehst, wechsle zu Card und behalte t.name(). Wenn javac über zwei public Typen meckert, behalte nur Card public und lasse record Tag ohne public.
Zwei Komponenten, zwei Drucke
Behalte dieselbe public Klasse Card. Erweitere das Record auf zwei Komponenten:
record Tag(String name, int n) {}
Tag t = new Tag("oak", 3);
System.out.println(t.name());
System.out.println(t.n());
Kompiliere erneut mit javac Card.java und starte java Card. Der Bildschirm zeigt oak, dann 3. Jede Komponente bekommt einen Zugriff mit demselben Namen. Die Reihenfolge im Kopf passt zu den Konstruktorargumenten.
record Tag(String name, int n) {}
public class Card {
public static void main(String[] args) {
Tag t = new Tag("oak", 3);
System.out.println(t.name());
System.out.println(t.n());
}
}
Geh den Lauf einmal durch. name() liefert "oak". n() liefert 3. Behalte die beiden Demos als zwei Lehrformen. Zuerst beweist du eine Komponente. Dann beweist du zwei Komponenten. Beide Formen teilen ein package-privates Record neben public Card.
Wenn du Konstruktorargumente vertauschst, landen die Werte in den falschen Komponenten. Behalte "oak" zuerst und 3 zweitens in der Lehrdatei, die du behältst.
Record-Gewohnheiten
Behalte den kompakten Kopf und die Zugriffe zusammen, während du übst.
📊 Record-Gewohnheiten für Card
| Gewohnheit | Form | Anfänger-Check |
|---|---|---|
| Deklarieren | record Tag(String name) {} |
Komponenten stehen im Kopf |
| Konstruieren | new Tag("oak") |
Argumente passen zur Komponentenreihenfolge |
| Lesen | t.name() |
Zugriffsname passt zur Komponente |
| Zwei Felder | record Tag(String name, int n) {} |
jede Komponente hat ihren Zugriff |
| Public-Klasse | public class Card |
starte mit java Card, nicht java Tag |
Records ist nicht Streams und nicht JUnit
Streams filterten und mappten Listwerte durch eine Pipeline. Records halten eine feste Menge von Komponenten in einem kompakten Typ. JUnit prüft später auf einer optionalen Seite mit Tests. Mische diese drei Aufgaben heute nicht in einer Anfängerdatei.
oak hier ist ein Record-Komponentenwert, den name() liefert. Er ist kein Stream-Filterergebnis und kein Lambda-forEach-Besuch allein. Wenn eine übrige Pipe-Datei noch gemappte Wörter in Großbuchstaben druckt, lass das als Historie und behalte Cards t.name()-Zeile.
Ohne das Schlüsselwort record fehlt der kompakte Kopf dieser Seite. Ohne passende Konstruktorargumente lehnt javac den Aufruf ab. Halte Kopf und new-Zeile aligned, während du jede Demo übst. Halte JUnit-Annotationen von dieser Seite fern bis zu jener Lektion, auch wenn du woanders schon eine Test-Überschrift im optionalen Pfad gesehen hast. Bevorzuge die kurze Record-Form, damit der Bildschirm an name() und n() gebunden bleibt bei jedem sorgfältigen Durchgang durch die Lehrdatei.
Ordner-Checks vor JUnit
Liste den Ordner nach erfolgreichem Compile. Du solltest Card.java und Card.class zusammen sehen, meist auch Tag.class für das Record. Bearbeite die Quelle, speichere, starte javac Card.java, dann java Card. Eine veraltete .class kann einen alten Einzeilen-Bildschirm zeigen, wenn du nach dem Hinzufügen von n das Compile überspringst.
Wenn javac über doppelte public Klassen meckert, behalte nur Card public. Wenn der Bildschirm Tag[oak] statt oak zeigt, hast du das ganze Record gedruckt — behalte den Lehrdruck als t.name(). Wenn nichts druckt, bestätige, dass main noch println aufruft.
Klebe kein Pipe-stream().map in Card. Klebe kein Cue-forEach als Ersatz für die Record-Geschichte. Die optionale Records-Aufgabe ist ein kompakter Typ mit Zugriffen.
Vor optionalem JUnit
Du kannst record Tag(String name) {} behalten, new Tag("oak") erzeugen, t.name() als oak drucken, dann record Tag(String name, int n) {} nutzen und oak und 3 drucken. Kompiliere mit javac Card.java und starte java Card. Die Tabelle trennt Deklarieren, Konstruieren und Lesen. Die nächste optionale Seite ist JUnit.
Behalte die Card-Demos für ein klares Records-Paar. Halte Pipe-Streams-Dateien von dieser Seite fern, wenn du Records übst. Halte Cue-Lambda-Dateien von dieser Seite fern, wenn du Records übst. Halte JUnit-Arbeit von dieser Seite fern bis zu jener Lektion. Diese Gewohnheiten sind der Checkpoint vor dem Weitergehen. Wenn der Einfeld-Bildschirm oak zeigt oder der Zweifeld-Bildschirm oak dann 3, hat Records seine Aufgabe für diese Lektion erledigt und du bist bereit für JUnit, wenn du den optionalen Pfad fortsetzt.
Ein letzter Durchgang im Ordner: eine public Card, package-privates record Tag, passende Konstruktorargumente, Zugriffsdrucke, kein Scanner-Warten, keine Stream-Pipeline nötig. Starte javac Card.java und java Card noch einmal bei der Demo, die du offen hast. Wenn der Bildschirm weiter oak oder oak dann 3 zeigt, ist die Records-Form solide und der Kurs kann auf der nächsten Seite zu optionalem JUnit wechseln. Bevorzuge eine klare Record-Gewohnheit pro Durchgang, damit jeder Pass dieselbe Landkarte lehrt.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt