Java Academy · Lektion

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.

Lektion 3 av 38 steg

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.

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 ”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

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