Java Academy · Lektion

Generiske metoder/klasser

Definér generiske klasser med typeparametre, og skriv generiske metoder med <T> før returtypen. Lær, hvornår typeinferens hjælper.

Lektion 3 af 38 trin

Generiske metoder/klasser er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 3 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 3 lektioner i alt.

Oversigt

Generiske klasser genbruger én udformning til mange typer, og generiske metoder fungerer med typeparametre selv i ikke-generiske klasser. Vi opretter et lille Pair<T,U>, en swap-metode og en statisk fabriksmetode.

Hvorfor generiske klasser?

Hvorfor gør vi klassen generisk?

  • Én udformning, mange typer: mindsker gentagelser.
  • Typesikkerhed: forkerte typer opdages ved kompilering.
  • Ren API: ingen casts i returværdier.

Kode: Pair<T,U>

Pair<T,U> bruger den samme klasse med to forskellige typer. Der er ikke brug for cast, og API'et er tydeligt.

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 uafhængigt af, om klassen er generisk. Signaturen er: <T> returnType... Eksempel: <T> T firstOrDefault(T[] arr, T def).

Kode: generisk swap

<T> er defineret på metodeniveau, så metoden kan arbejde med forskellige arrays. Du angiver ikke typen ved kaldet; kompileren udleder 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 fabriksmetode

Statisk generisk fabriksmetode: Ved kaldet of(T v) udledes typen. Det giver en ren og letlæselig anvendelse.

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

Tjek af generiske metoder

Hurtigt tjek: Hvordan deklarerer du en generisk metode korrekt?

Opsamling

Opsamling: Generiske klasser (Pair<T,U>) mindsker gentagelser; generiske metoder (signaturen <T>) fungerer uafhængigt af klassen. Typeudledning forenkler kald.

Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
104
Lektioner
374

Ofte stillede spørgsmål

Er lektionen “Generiske metoder/klasser” gratis?

Ja — hele teksten til “Generiske metoder/klasser” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 3 lektioner i alt.

Hvad lærer jeg i “Generiske metoder/klasser”?

Definér generiske klasser med typeparametre, og skriv generiske metoder med <T> før returtypen. Lær, hvornår typeinferens hjælper. Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Java Academy?

Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 3.

Hvor lang tid tager lektionen “Generiske metoder/klasser”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Java Academy-lektion?

Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Interfaces i praksis
  2. Grundlæggende generics (T, inferens)
  3. Generiske metoder/klasser
← Tilbage til Java Academy