Java Academy · Lektion

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.

Lektion 2 av 38 steg

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.

Gratis att börja

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

  1. Gränssnitt i praktiken
  2. Grunderna i generics (T, inferens)
  3. Generiska metoder/klasser
← Tillbaka till Java Academy