为什么第一行有效但第二行无效:
Class<? extends Class> c1 = (new Object()).getClass().getClass();
Class<? extends Class<? extends Class>> c2 = (new Object()).getClass().getClass().getClass();
最佳答案
来自Object.getClass
的API文档
实际结果类型为Class,其中| X |是擦除在其上调用getClass的表达式的静态类型。
因此(new Object()).getClass()
将返回Class<? extends Object>
。我们将为此呼叫getClass
。所以X将是Class
,这将给我们Class<? extends Class>
。