Rust has had generics for 10 years and doesn't have this problem. I think it's more a culture problem in Java than anything (and arguably a historical one).