What does the following Java code demonstrate?
public class GenericExample<T> {
private T data;
public GenericExample(T data) {
this.data = data;
}
public T getData() {
return data;
}
public static void main(String[] args) {
GenericExample<Integer> intExample = new GenericExample<>(123);
System.out.println(intExample.getData());
}
}