What is Type Erasure in Generics | How it Works | Java