Return type of Object.getClass()

Zhong Yu zhong.j.yu at gmail.com
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
called.

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