Java Academy · leksjon

Generiske metoder og klasser

Definer generiske klasser med typeparametere, og skriv generiske metoder med <T> før returtypen. Lær når typeinferens er nyttig.

Leksjon 3 av 38 trinn

Generiske metoder og klasser er en gratis leksjon i Java Academy på CoddyKit. Dette er leksjon 3 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Java Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Java Academy inneholder totalt 3 leksjoner.

Oversikt

Generiske klasser gjenbruker én utforming for mange typer, og generiske metoder arbeider med typeparametere også i ikke-generiske klasser. Vi skal lage en liten Pair<T,U>, en swap-metode og en statisk factory.

Hvorfor generiske klasser?

Hvorfor gjør man klassen generisk?

  • Én utforming, mange typer: reduserer gjentakelse.
  • Typesikkerhet: feil typer oppdages under kompileringen.
  • Ryddig API: ingen cast ved returverdier.

Kode: Pair<T,U>

Pair<T,U> bruker den samme klassen med to forskjellige typer. Det er ikke nødvendig med cast, og API-et er tydelig.

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());
  }
}

Generiske metoder: signatur

Generiske metoder fungerer uavhengig av om klassen er generisk. Signatur: <T> returnType... Eksempel: <T> T firstOrDefault(T[] arr, T def).

Kode: generisk swap

<T> ble deklarert på metodenivå, slik at metoden kan arbeide med forskjellige arrayer. Ved kall angir man ikke typen; kompilatoren utleder 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"));
    }
  }
}

Kode: statisk generisk factory

Statisk generisk factory: Ved kall på of(T v) utledes typen. Bruken blir ryddig og lett å lese.

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());
  }
}

Sjekk av generiske metoder

Rask sjekk: Hvordan deklarerer man en generisk metode på riktig måte?

Oppsummering

Oppsummering: Generiske klasser (Pair<T,U>) reduserer gjentakelse, og generiske metoder (signaturen <T>) fungerer uavhengig av klassen. Typeutledning gjør kallene enklere.

Gratis å komme i gang

Lær deg Java med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
104
Leksjoner
374

Ofte stilte spørsmål

Er leksjonen «Generiske metoder og klasser» gratis?

Ja – hele teksten i «Generiske metoder og klasser» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Java Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Java Academy inneholder totalt 3 leksjoner.

Hva lærer jeg i «Generiske metoder og klasser»?

Definer generiske klasser med typeparametere, og skriv generiske metoder med <T> før returtypen. Lær når typeinferens er nyttig. Du øver på Java Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Java Academy?

Ingen tidligere erfaring er nødvendig. Java Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 3.

Hvor lang tid tar leksjonen «Generiske metoder og klasser»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Java Academy-leksjonen?

Ja. Alle Java Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grensesnitt i praksis
  2. Grunnleggende om generiske typer (T, inferens)
  3. Generiske metoder og klasser
← Tilbake til Java Academy