为什么第一行有效但第二行无效:

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>

10-08 19:03