0Pricing
Java Academy · Lezione

Basi dei generics (T, inferenza)

Imparare i parametri di tipo generici T , capire perché garantiscono sicurezza a compile-time e come l’operatore diamond deduce i tipi.

Basi dei generics (T, inferenza) è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 2 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.

Perché usare i generics?

I generics aggiungono i tipi ai contenitori e alle utility, così il compilatore può proteggere il codice. Vantaggi:

  • Sicurezza dei tipi — niente mescolanze accidentali di tipi.
  • Niente cast — codice più pulito.
  • Riutilizzabilità — una sola classe funziona con molti tipi.

Che cos'è T?

T (parametro di tipo) è un segnaposto per un tipo reale. Quando si scrive Box<String>, il compilatore considera T come String all'interno di quell'utilizzo.

Codice: Box<T>

Box<T>: sostituendo T con String, vengono accettati solo valori String. Un tipo errato genera un errore in fase di compilazione; non ci sono sorprese a runtime.

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

Codice: inferenza diamond

Con <> (diamond), il compilatore deduce il tipo dal lato destro. Se non è compatibile con il tipo a sinistra, la compilazione fallisce; questo garantisce maggiore sicurezza.

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

Parametri di tipo vincolati

Vincoli: alcuni metodi generici richiedono una capacità come Comparable. Ad esempio, <T extends Comparable<T>> significa che T deve essere confrontabile.

Codice: metodo generico vincolato

Metodo generico: <T extends Comparable<T>>. Integer e String sono compatibili perché implementano entrambi 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)
  }
}

Verifica sui concetti base dei generics

Verifica rapida: qual è il principale vantaggio di usare generics come Box<String>?

Riepilogo

Riepilogo: T è un segnaposto; con il diamond il tipo viene dedotto. I vincoli (extends Comparable) rendono i metodi generici sicuri e potenti.

Domande Frequenti

La lezione «Basi dei generics (T, inferenza)» è gratuita?

Sì — il testo completo di «Basi dei generics (T, inferenza)» è 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 «Basi dei generics (T, inferenza)»?

Imparare i parametri di tipo generici T , capire perché garantiscono sicurezza a compile-time e come l’operatore diamond deduce i tipi. 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 2 di 3.

Quanto tempo richiede la lezione «Basi dei generics (T, inferenza)»?

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