In cases where you might use the classes in a parallel thread you might want to guarantee no one tries to misuse the collection. But that only works if you are the source of the collection too, so there are other holes in which people can pass through the protection. But these are pretty much a "free" way to add protection against casting. And some people cast, you can look in stack overflow for questions based around people saying "I cast this to arraylist, that's ok right?"