In this tutorial on reflection it states:
[...] because generics are implemented via type erasure which removes all information regarding generic typ
It means, when it is being converted into bytecode. For checking whether correct types are used or not, generics are used. But at the time of bytecode generation, information is removed