Grunderna i generics (T, inferens)
Lär er generiska typparametrar T , varför de ger säkerhet vid kompilering och hur diamond-operatorn härleder typer.
Grunderna i generics (T, inferens) är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 2 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.
Varför generics?
Generics gör det möjligt att ange typer för behållare och verktyg, så att kompilatorn kan skydda koden. Fördelar:
- Typsäkerhet — ingen oavsiktlig blandning av typer.
- Inga casts — renare kod.
- Återanvändbarhet — en klass fungerar för många typer.
Vad är T?
T (typparameter) är en platshållare för en faktisk typ. När Box<String> skrivs behandlar kompilatorn T som String i den användningen.
Kod: Box<T>
Box<T>: När String anges i stället för T accepteras endast String. En felaktig typ ger ett kompileringsfel; inga överraskningar vid körning.
public class Main {
// A tiny generic container
static class Box<T> {
private T value;
void set(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
Box<String> bs = new Box<String>(); // T becomes String
bs.set("hello");
System.out.println(bs.get()); // no cast needed
// Box<Integer> bi = new Box<Integer>();
// bi.set("oops"); // would not compile: String is not Integer
}
}
Kod: diamond-inferens
<> (diamond) gör att kompilatorn härleder typen på höger sida. Om den inte är kompatibel med typen till vänster misslyckas kompileringen, vilket ger typsäkerhet.
public class Main {
static class Box<T> {
private T value;
Box() {}
Box(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
// Type on the left, diamond on the right — compiler infers T
Box<Integer> a = new Box<>(123);
Box<String> b = new Box<>("hi");
System.out.println(a.get() + 1); // 124
System.out.println(b.get().toUpperCase());
}
}
Begränsade typparametrar
Bounds: Vissa generiska metoder kräver en egenskap som Comparable. Exempelvis innebär <T extends Comparable<T>> att T måste kunna jämföras.
Kod: begränsad generisk metod
Generisk metod: <T extends Comparable<T>>. Integer och String är kompatibla eftersom båda implementerar Comparable.
public class Main {
// Generic method: works for any Comparable type
static <T extends Comparable<T>> T min(T a, T b) {
return (a.compareTo(b) <= 0) ? a : b;
}
public static void main(String[] args) {
System.out.println(min(3, 7)); // Integer
System.out.println(min("apple", "banana")); // String (lexicographic)
}
}
Kontroll av grunderna i generics
Snabb kontroll: Vilken är den främsta fördelen med att använda generics som Box<String>?
Sammanfattning
Sammanfattning: T är en platshållare och typen härleds med diamond. Med begränsningar (extends Comparable) blir generiska metoder säkra och kraftfulla.
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 ”Grunderna i generics (T, inferens)” gratis?
Ja – hela texten till ”Grunderna i generics (T, inferens)” 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 ”Grunderna i generics (T, inferens)”?
Lär er generiska typparametrar T , varför de ger säkerhet vid kompilering och hur diamond-operatorn härleder typer. 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 2 av 3.
Hur lång tid tar lektionen ”Grunderna i generics (T, inferens)”?
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