Return type of Object.getClass()

Zhong Yu zhong.j.yu at
Thu Jun 30 21:16:41 UTC 2011

Why does it return Class<? extends |X|> instead of Class<? extends X>? Quote:

The actual result type is Class<? extends |X|> where |X| is the
erasure of the static type of the expression on which getClass is

This means the following code does not compile
    T obj = ...;
    Class<T> clazz = obj.getClass();

What's the reason for erasure here? Thanks.

Zhong Yu

More information about the core-libs-dev mailing list