Generics in Java
Du benennst den Elementtyp in spitzen Klammern, wenn du eine Liste baust. In Bin.java behältst du die public Klasse Bin, importierst java.util.ArrayList, erzeugst ArrayList<String> names = new ArrayList<>();, fügst "oak" hinzu und druckst names.get(0). Kompiliere mit javac Bin.java und starte java Bin. Der Bildschirm sollte oak zeigen. Eine zweite Demo speichert den Integer-Wert 3 auf dieselbe Weise. Lass optionales Lambda für die nächste Seite. Diese Lektion sind typisierte Listen mit Generics, keine Kommandozeilen-args und kein Scanner-Mini-Projekt.
String-Liste mit Typargument
Öffne Bin.java. Behalte den public Klassennamen Bin. Lösche übrige Programmargumente-Flag-Demos, übrige Box-Scanner-Prompts, übrige Kompilier-Build-Drucke und übrige Shelf-Sammlungsgeschichte, wenn sie die Generics-Geschichte verdecken. Das Programm darf nicht auf Tippen warten und nicht args lesen.
Füge oben den Import hinzu:
import java.util.ArrayList;
In Bin.main erzeugst du eine Liste, deren Elemente String sind:
ArrayList<String> names = new ArrayList<>();
Die spitzen Klammern nach ArrayList halten das Typargument String. Das leere <> auf der new-Seite ist das Diamond — Java füllt denselben Typ von links. Dann speicherst du ein Wort und druckst es per Index:
names.add("oak");
System.out.println(names.get(0));
get(0) liefert einen String, weil die Liste mit String deklariert wurde. Der Bildschirm zeigt oak.
import java.util.ArrayList;
public class Bin {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("oak");
System.out.println(names.get(0));
}
}
Starte im Ordner mit Bin.java javac Bin.java. Wenn Klammern, spitze Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Dann java Bin — nicht java Bin.java. Behalte eine public Klasse, damit der Name zu Bin passt.
Geh den Lauf einmal durch. Java startet bei Bin.main. Die Liste ist für String typisiert. add speichert "oak". get(0) liefert dieses Wort. println schreibt oak. Nichts druckt args[0] von Flag. Nichts wartet bei item:. Nichts druckt [oak, pine], es sei denn, du startest noch eine alte Shelf-Datei.
Sprich die Anfängerregel, während du den Bildschirm siehst: spitze Klammern benennen den Elementtyp; Diamond wiederholt ihn bei new; get liefert diesen Typ. Erfinde keine Lambda-Demos auf dieser Seite. Lambda wartet auf die nächste optionale Lektion. Lass die Liste nicht raw als ArrayList names ohne Typargument in dieser Lehrdatei.
Wenn du noch oak von java Flag oak siehst, waren das Programmargumente. Hier ist oak ein Listenelement, und der Startbefehl ist nur java Bin. Wenn javac ArrayList nicht findet, prüfe die Import-Zeile.
Integer-Liste mit derselben Gewohnheit
Generics sind nicht nur für Wörter. Behalte dieselbe public Klasse Bin. Baue eine Liste von Integer-Werten:
ArrayList<Integer> nums = new ArrayList<>();
nums.add(3);
System.out.println(nums.get(0));
Kompiliere erneut mit javac Bin.java und starte java Bin. Der Bildschirm zeigt 3. Das Typargument ist Integer, weil ArrayList Objekte speichert und Integer die Objektform für ganze Zahlen in dieser Anfängerform ist. Das Diamond kopiert den Typ weiterhin von der linken Seite.
import java.util.ArrayList;
public class Bin {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<>();
nums.add(3);
System.out.println(nums.get(0));
}
}
Geh den Lauf einmal durch. Die Liste ist für Integer typisiert. add(3) speichert den Wert. get(0) liefert ihn. println schreibt 3. Behalte die beiden Demos als zwei Lehrformen. Zuerst beweist du eine String-Liste. Dann eine Integer-Liste. Beide teilen Import, Diamond, add und get(0).
Wenn du ArrayList<String> schreibst und dann add(3), lehnt javac die Abweichung ab. Wenn du ArrayList<Integer> schreibst und dann add("oak"), lehnt javac das ebenfalls ab. Das Typargument ist ein Vertrag dafür, was die Liste hält.
Gewohnheiten für typisierte Listen
Behalte Typargument und Diamond zusammen, während du übst.
📊 Generics-Gewohnheiten für Bin
| Habit | Typed shape | Beginner check |
|---|---|---|
| Declare | ArrayList<String> names |
angle brackets name the element type |
| Create | new ArrayList<>() |
diamond copies the type from the left |
| Store String | names.add("oak") |
value matches String |
| Store Integer | nums.add(3) |
value matches Integer |
| Read | get(0) |
returns the declared element type |
Generics ist nicht Flag und nicht Lambda
Programmargumente füllten String[] args von der Startzeile. Generics benennt den Elementtyp einer Sammlung, die du im Code baust. Lambda verkürzt einige Aufrufformen auf einer späteren optionalen Seite. Mische diese drei Jobs nicht in einer Anfängerdatei heute.
oak in Bin ist ein gespeicherter Listenwert. oak nach java Flag war ein Argument. Gleiche Schreibweise, anderer Job. Wenn eine übrige Flag-Datei noch Wörter auf der Kommandozeile braucht, lass sie als Historie und starte java Bin ohne Extra-Wörter.
Ohne Typargument verliert eine raw Liste den klaren Vertrag, den diese Seite lehrt. Behalte ArrayList<String> oder ArrayList<Integer> in den Demos, die du behältst. Halte Lambda-Syntax von dieser Seite fern, bis zu jener Lektion.
Ordner-Checks vor Lambda
Liste den Ordner nach erfolgreichem Kompilieren. Du solltest Bin.java und Bin.class zusammen sehen. Bearbeite die Quelle, speichere, starte javac Bin.java, dann java Bin. Eine alte .class kann einen alten Druck zeigen, wenn du nach einer Änderung das Kompilieren überspringst.
Wenn javac über doppelte public Klassen meckert, behalte nur Bin als public. Zeigt der Bildschirm [oak] statt oak, hast du die ganze Liste statt get(0) gedruckt — behalte den Lehrdruck als get(0). Wenn nichts druckt, bestätige, dass main noch println aufruft.
Füge keine Flag-Argument-Schleifen in Bin ein. Füge keine Box-Scanner-Prompts in Bin ein. Der optionale Generics-Job sind typisierte Listen mit klarem Elementtyp.
Vor optionalem Lambda
Du kannst public Klasse Bin behalten, ArrayList importieren, ArrayList<String> mit Diamond bauen, "oak" hinzufügen, get(0) als oak drucken, dann ArrayList<Integer> bauen, 3 hinzufügen und 3 drucken. Kompiliere mit javac Bin.java und starte java Bin. Die Tabelle trennt deklarieren, erzeugen, speichern und lesen. Die nächste optionale Seite ist Lambda.
Behalte die Bin-Demos als klares Generics-Paar. Halte Flag-Argument-Dateien von dieser Seite fern, wenn du typisierte Listen übst. Halte Box-Mini-Projekt-Dateien von dieser Seite fern, wenn du typisierte Listen übst. Halte Lambda-Arbeit von dieser Seite fern, bis zu jener Lektion. Diese Gewohnheiten sind der Checkpoint vor dem Weitergehen. Wenn die String-Demo oak oder die Integer-Demo 3 zeigt, hat Generics seinen Job für diese Lektion erledigt und du bist bereit für Lambda, wenn du den optionalen Pfad fortsetzt.
Ein letzter Durchgang im Ordner: eine public Bin, Import vorhanden, Typargumente in spitzen Klammern, Diamond bei new, passende add-Werte, get(0)-Druck, kein Scanner-Warten, keine Startwörter nötig. Starte javac Bin.java und java Bin noch einmal mit der Demo, die du offen hast. Zeigt der Bildschirm noch oak oder 3, ist die Generics-Form solide und der Kurs kann zur optionalen Lambda auf der nächsten Seite weitergehen. Bevorzuge eine klare typisierte-Listen-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