It is possible to do the generification of java.util.List. This shows that List instances might be of a specific type. That type of instances in such cases could only be read from List.
Generic List is explained by this code.
String instances can be stored by this list.
Java Code: This is the code to expalin Generic List declaration
List<String> list = new ArrayList<String>;
Exists are being checked just at the compilation time by this generic type.
Accessing a Generic