Yeah, Java was inspired by C++, and the designers decided to take the worst ideas and run with them: such as exception specifications. C++ & C# both realized they were a bad idea, and decided to do away with them. Java generics are also fucked up. They could have followed C#, but no, they had to do their own model, and they fucked it up.