Why is this a problem (from comments on your question)
Well, consider, for example, that this method cannot overload:
void foo(List<String> strings) { ... } void foo(List<Integer> ints) { ... }
although it makes sense to actually allow it. (The main reason why this doesn't work today is because when compiled to bytecode, it looks like foo(List strings) and foo(List ints) .)
Are there any JVM plans to support generics at run time?
According to this page , at least this is not a line for Java 7:
Reified Generics
Currently, generic tools are implemented using erasure, which means that general type information is not available at runtime, making it difficult to write some code. These tools were implemented in such a way as to maintain backward compatibility with old custom code. Reasonable generic files will provide information about the common type at runtime, which will lead to the loss of obsolete non-shared code. However, Neil Gufter suggested making types re-accessible only if they are specified so as not to violate backward compatibility.
References
aioobe
source share