0Pricing
Java Academy · Lezione

Metodi e classi generici

Definire classi generiche con parametri di tipo e scrivere metodi generici con <T> prima del tipo restituito. Imparare quando l’inferenza dei tipi è utile.

Metodi e classi generici è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 3 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 3 lezioni in totale.

Panoramica

Le classi generiche riutilizzano un'unica struttura per molti tipi, mentre i metodi generici funzionano con parametri di tipo anche all'interno di classi non generiche. Creeremo un piccolo Pair<T,U>, un metodo swap e una factory statica.

Perché usare classi generiche?

Perché rendere generica una classe?

  • Un'unica struttura, molti tipi: riduce le ripetizioni.
  • Sicurezza dei tipi: i tipi errati vengono rilevati in fase di compilazione.
  • API pulita: nessun cast nei valori restituiti.

Codice: Pair<T,U>

Pair<T,U> permette di usare la stessa classe con due tipi diversi. Non servono cast e l'API è chiara.

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

Metodi generici: firma

I metodi generici funzionano indipendentemente dal fatto che la classe sia generica. Firma: <T> returnType... Esempio: <T> T firstOrDefault(T[] arr, T def).

Codice: swap generico

<T> è stato dichiarato a livello del metodo; in questo modo il metodo funziona con array diversi. Durante la chiamata non abbiamo specificato il tipo: il compilatore lo ha dedotto.

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

Codice: factory generica statica

Factory generica statica: nella chiamata of(T v) il tipo viene dedotto. L'utilizzo è pulito e leggibile.

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

Verifica sui metodi generici

Verifica rapida: come si dichiara correttamente un metodo generico?

Riepilogo

Riepilogo: le classi generiche (Pair<T,U>) riducono le ripetizioni; i metodi generici (firma <T>) funzionano indipendentemente dalla classe. L'inferenza dei tipi semplifica le chiamate.

Domande Frequenti

La lezione «Metodi e classi generici» è gratuita?

Sì — il testo completo di «Metodi e classi generici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 3 lezioni in totale.

Cosa imparerò in «Metodi e classi generici»?

Definire classi generiche con parametri di tipo e scrivere metodi generici con <T> prima del tipo restituito. Imparare quando l’inferenza dei tipi è utile. Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Java Academy?

Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 3.

Quanto tempo richiede la lezione «Metodi e classi generici»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Java Academy?

Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Interfacce nella pratica
  2. Basi dei generics (T, inferenza)
  3. Metodi e classi generici
← Torna a Java Academy