Tipi Generici in Java

I tipi generici ci permettono di definire classi e metodi con attributi e parametri di tipo astratto. In questo modo possiamo scrivere una sola classe o metodo che gestisce un qualsiasi tipo di dato.

Tipi Generici

Supponiamo di dover scrivere una semplice classe che salvi un valore al suo interno e lo ritorni quando necessario. Questo valore può essere di qualsiasi tipo. Vediamo come fare per non scrivere centomila classi:

public class Contenitore<T> {

    //attributi
    private T contenuto;

    //costruttore
    public Contenitore(T contenuto){

        this.contenuto = contenuto;
    }

    //metodi
    public T getContenuto() {
        return contenuto;
    }
}

In Java i tipi generici si mettono tra simbolo minore e maggiore, il nome che viene dato loro è indifferente.

public class Main {

    public static void main(String[] args) { 

        Contenitore<Integer> c1 = new Contenitore<Integer>(10);
        Contenitore<Double> c2 = new Contenitore<Double>(5.50);
        Contenitore<String> c3 = new Contenitore<String>("una stringa");

        System.out.println(c1.getContenuto());
        System.out.println(c2.getContenuto());
        System.out.println(c3.getContenuto());

    }
}
10
5.5
una stringa

Ecco che grazie ai tipi generici mi è bastato scrivere una sola classe per gestire qualsiasi tipo mi vanga passato. Ho dovuto sostituire int con Integer e double con Double poiché i tipi generici di Java lavorano solo con oggetti e non con tipi primitivi.