Generics enable classes, interfaces, and methods to take other classes and interfaces as type parameters.
This example uses generic class Param to take a single type parameter T, delimited by angle brackets (<>):
public class Param<T> {
private T value;
public T getValue() ...