And don't forget Java's type erasure. Still wondering how they could actually call that a FEATURE.
Also what are you doing that you need type information at runtime?
And as type erasure happens very, very early in the compilation process, you lose a lot of static type information the compiler could act on or give you warnings.