The following Java method fails to compile:
void foo(T t)
{
Class extends T> klass = t.getClass();
}
Error
Because the T
class' type doesn't extend from T
. Instead, it extends from Number
, exactly as you have declared yourself in
. Simple as that.
A better question would be:
Why doesn't the following compile?
void foo(T t) { Class class1 = t.getClass(); }
The answer to that is that the Object#getClass()
returns Class>
with an unbounded wildcard ?
because the object itself is not directly aware about its generic type which is been expected in an arbitrary method.