Extend Java's type system with Generic Classes

Generics are a Java paradigm which extends the language's type system, allowing the development of less redundant code with an unnecessary amount of casting. This mechanic's useful because it can find type errors at compile-time, bringing a safety feeling for the programmer with will have the certainty that he will not come across a ClassCastException at run time.

This is a companion discussion topic for the original entry at http://iq.opengenus.org/generic-class-in-java/