这个问题在这里已经有答案了:
java:有界类型的getclass()(5个答案)上个月关门了。
<T> void foo(T bar) { final Class<? extends T> barType = bar.getClass(); }
这不会编译。 barType 决心 capture of ? extends Object . 对我来说没有意义。java类型推断是如此有限还是我遗漏了什么?
barType
capture of ? extends Object
nr9pn0ug1#
请参见下面方法定义中的区别。方法调用中的bar对象可以获取任何类型的值,因此它属于 <? extends Object> 默认而不是 <? extends T> . 基本上,t可以是任何东西。因此,在编译时它是默认的对象类型。
<? extends Object>
<? extends 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(); }
1条答案
按热度按时间nr9pn0ug1#
请参见下面方法定义中的区别。方法调用中的bar对象可以获取任何类型的值,因此它属于
<? extends Object>
默认而不是<? extends T>
. 基本上,t可以是任何东西。因此,在编译时它是默认的对象类型。