Why is Java's Class<T> generic?

generics, java

Solution

So that generic typed methods can be used -

Class<Foo> klass = Foo.class;
Foo f = klass.newInstance();
Foo f = klass.cast(Object);

Problem

Why is Java's `Class<T>` generic?

Original source