Because it allows you to write generic classes, that can hold generic data types, which are only specialized when the class is actually instantiated.
List<String>
is indeed a specialization, but the only class that has been written is List<E>
, which is generic.