Jef*_*rey 8 java generics bounded-wildcard
Class<? extends Integer>将编译正常,但是Integer是最终类型,因此将它用作上限是没有意义的(没有任何东西会永远extend).
如果您尝试使用final类型作为类型参数的上限,您将收到编译器警告:
类型参数T不应受最终类型Integer的限制.最终类型无法进一步扩展
为什么使用final类型作为通配符的上限是完全正常的,但是为类型参数抛出警告?为什么Java甚至允许通配符被最终的上层类型限制?
Class<Integer>并不像作业那样宽容Class<? extends Integer>.
例如,这编译:
Class<? extends Number> numberClass = Integer.class;
Class<? extends Integer> integerClass = numberClass.asSubclass(Integer.class);
Run Code Online (Sandbox Code Playgroud)
这不是:
Class<? extends Number> numberClass = Integer.class;
Class<Integer> integerClass = numberClass.asSubclass(Integer.class);
Run Code Online (Sandbox Code Playgroud)
我自己,我不能像你那样得到编译器警告(也许你可以提供一个关于你的编译器的例子和细节?).