getClass() of a Generic Method Parameter in a Java

后端 未结 2 1736

The following Java method fails to compile:

 void foo(T t)
{
    Class klass = t.getClass();
}

Error

2条回答
  •  说谎
    说谎 (楼主)
    2021-02-14 17:58

    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.

提交回复
热议问题