instanceoft.getclass()不返回class< ?扩展t>

t98cgbkg  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(245)

这个问题在这里已经有答案了

java:有界类型的getclass()(5个答案)
上个月关门了。

<T> void foo(T bar) {
    final Class<? extends T> barType = bar.getClass();
}

这不会编译。 barType 决心 capture of ? extends Object . 对我来说没有意义。java类型推断是如此有限还是我遗漏了什么?

nr9pn0ug

nr9pn0ug1#

请参见下面方法定义中的区别。方法调用中的bar对象可以获取任何类型的值,因此它属于 <? extends Object> 默认而不是 <? extends T> . 基本上,t可以是任何东西。因此,在编译时它是默认的对象类型。

<T> void foo(T bar) 
        {
            final Class<? extends Object> barType = bar.getClass();
        }

        <T> void foo(T bar) 
        {
            final Class<? extends T> barType = bar.getClass();
        }

相关问题