Object is the base class for all java classes. Type is just a tag interface for all classes representing types. It was introduced in java 1.5 because before java 1.5 there were no classes that represent the java type except java.lang.Class . Then, when generics were introduced, it became necessary to create a common abstraction common to Class , a common array, etc. Thus, they defined the Type interface.
Alexr source share