I Generics Java
I generics in Java, introdotti a partire dalla versione 1.5, consentono di definire un’astrazione sul tipo di oggetto da utilizzare in una classe, similmente a quanto avviene utilizzando i template in C++.
Per creare una classe generica, scriviamo qualcosa simile alla seguente porzione di codice:
public class GenericsTest { public static class Pair<S, T> { public S first; public T second; public Pair(S first, T second) { this.first = first; this.second = second; } } public static void main(String[] args) { Pair<String, Integer> pair = new Pair<String, Integer>("Antonio", 22); System.out.println(pair.first + ", " + pair.second); } }
S e T saranno due classi generiche, specificate quando si istanzia la classe, come accade nel main.
Da notare la differenza con questo tipo di approccio:
public class GenericsTest { public static class Pair { public Object first; public Object second; public Pair(Object first, Object second) { this.first = first; this.second = second; } } public static void main(String[] args) { Pair pair = new Pair("Antonio", 22); Integer i = (Integer)pair.first + (Integer)pair.second; } }
Questo codice potrà essere compilato ma produrrà un errore a runtime.
Utilizzando i generics, invece, verrà prodotto un errore a tempo di compilazione, consentendo di evitare errori subdoli.