Generiska metoder/klasser
Definiera generiska klasser med typparametrar och skriv generiska metoder med <T> före returtypen. Lär er när typinferens hjälper.
Generiska metoder/klasser är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 3 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 3 lektioner.
Översikt
Generiska klasser återanvänder en design för många typer, och generiska metoder fungerar med typparametrar även i icke-generiska klasser. En liten Pair<T,U>, en swap-metod och en statisk factory-metod kommer att skapas.
Varför generiska klasser?
Varför gör man en klass generisk?
- En design, många typer: minskar upprepning.
- Typsäkerhet: felaktiga typer upptäcks vid kompileringen.
- Rent API: inga casts i returvärden.
Kod: Pair<T,U>
Pair<T,U> använder samma klass med två olika typer. Inga casts behövs och API:t blir tydligt.
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());
}
}
Generiska metoder: signatur
Generiska metoder fungerar oberoende av om klassen är generisk. Signatur: <T> returnType... Exempel: <T> T firstOrDefault(T[] arr, T def).
Kod: generisk swap
<T> definieras på metodnivå, så metoden fungerar med olika arrayer. Ingen typ angavs vid anropet; kompilatorn härledde den.
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"));
}
}
}
Kod: statisk generisk factory
Statisk generisk factory: vid anropet av of(T v) sker typinferens. Användningen är ren och lättläst.
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());
}
}
Kontroll av generiska metoder
Snabb kontroll: Hur deklareras en generisk metod korrekt?
Sammanfattning
Sammanfattning: Generiska klasser (Pair<T,U>) minskar upprepning, och generiska metoder (signaturen <T>) fungerar oberoende av klassen. Typinferens förenklar anropen.
Lär dig Java med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 104
- Lektioner
- 374
Vanliga frågor
Är lektionen ”Generiska metoder/klasser” gratis?
Ja – hela texten till ”Generiska metoder/klasser” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 3 lektioner.
Vad lär jag mig i ”Generiska metoder/klasser”?
Definiera generiska klasser med typparametrar och skriv generiska metoder med <T> före returtypen. Lär er när typinferens hjälper. Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Java Academy?
Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 3.
Hur lång tid tar lektionen ”Generiska metoder/klasser”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Java Academy-lektionen?
Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Gränssnitt i praktiken
- Grunderna i generics (T, inferens)
- Generiska metoder/klasser