Generieke methoden/klassen
Definieer generieke klassen met typeparameters en schrijf generieke methoden met <T> vóór het retourtype. Leer wanneer type-inferentie helpt.
Generieke methoden/klassen is een gratis Java Academy-les op CoddyKit. Dit is les 3 van 3. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 3 lessen.
Overzicht
Generieke klassen hergebruiken één ontwerp voor veel typen, en generieke methoden werken met typeparameters, zelfs binnen niet-generieke klassen. We maken een kleine Pair<T,U>, een swap-methode en een statische fabrieksmethode.
Waarom generieke klassen?
Waarom maken we een klasse generiek?
- Eén ontwerp, veel typen: vermindert herhaling.
- Typeveiligheid: verkeerde typen worden tijdens het compileren gevonden.
- Schone API: geen typecasts in retourwaarden.
Code: Pair<T,U>
Pair<T,U> gebruikt dezelfde klasse met twee verschillende typen. Typecasts zijn niet nodig en de API is duidelijk.
public class Main {
// Simple generic data holder with two type parameters
static class Pair<T, U> {
private final T first;
private final U second;
Pair(T first, U second) { this.first = first; this.second = second; }
T first() { return first; }
U second() { return second; }
public String toString() { return "Pair(" + first + ", " + second + ")"; }
}
public static void main(String[] args) {
Pair<String, Integer> p = new Pair<>("age", 21);
System.out.println(p);
System.out.println(p.first() + " -> " + p.second());
}
}
Generieke methoden: handtekening
Generieke methoden werken onafhankelijk van het feit of de klasse generiek is. Handtekening: <T> returnType... Voorbeeld: <T> T firstOrDefault(T[] arr, T def).
Code: generieke swap
<T> is op methodeniveau gedeclareerd, zodat de methode met verschillende arrays werkt. Bij het aanroepen hebben we het type niet opgegeven; de compiler heeft het afgeleid.
public class Main {
// Generic utility method: swap two indices of an array of any reference type
static <T> void swap(T[] arr, int i, int j) {
T tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
}
public static void main(String[] args) {
String[] names = { "Ada", "Bob", "Cyd" };
swap(names, 0, 2); // works with String[]
for (int k = 0; k < names.length; k = k + 1) {
System.out.print(names[k] + (k < names.length - 1 ? " " : "\n"));
}
}
}
Code: statische generieke fabrieksmethode
Bij de statische generieke fabrieksmethode of(T v) wordt het type afgeleid. Het gebruik is overzichtelijk en goed leesbaar.
public class Main {
static class Box<T> {
private final T value;
private Box(T v) { this.value = v; }
public T get() { return value; }
// Static generic factory method inside a generic class
public static <T> Box<T> of(T v) { return new Box<T>(v); }
}
public static void main(String[] args) {
// Type inferred by diamond and method generic parameter
Box<Integer> bi = Box.of(42);
Box<String> bs = Box.of("hi");
System.out.println(bi.get() + 1);
System.out.println(bs.get().toUpperCase());
}
}
Controle van generieke methoden
Korte controle: hoe declareer je een generieke methode op de juiste manier?
Herhaling
Herhaling: generieke klassen (Pair<T,U>) verminderen herhaling; generieke methoden (de handtekening <T>) werken onafhankelijk van de klasse. Type-inferentie vereenvoudigt aanroepen.
Leer Java met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 104
- Lessen
- 374
Veelgestelde vragen
Is de les “Generieke methoden/klassen” gratis?
Ja — de volledige tekst van “Generieke methoden/klassen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 3 lessen.
Wat leer ik in “Generieke methoden/klassen”?
Definieer generieke klassen met typeparameters en schrijf generieke methoden met <T> vóór het retourtype. Leer wanneer type-inferentie helpt. Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Java Academy te beginnen?
Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 3.
Hoe lang duurt de les “Generieke methoden/klassen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Java Academy?
Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Interfaces in de praktijk
- Basis van generics (T, type-inferentie)
- Generieke methoden/klassen