类<?super T> in getSuperclass()它有意义吗?

sky*_*ar7 4 java generics wildcard type-parameter bounded-wildcard

Class<? super T>  getSuperclass()
Run Code Online (Sandbox Code Playgroud)

Class类中的getSuperclass()返回一个类型为<?的Class.super T>,这意味着Super的Class类型参数可以是T或它的任何超类,现在为什么SuperClass的Class类型参数与子类的类型相同?

例如

Class<Manage>.class.getSuperclass() 
Run Code Online (Sandbox Code Playgroud)

不回来

Class<Manager> 
Run Code Online (Sandbox Code Playgroud)

从来没有

这有意义吗?或者我在这里遗失了什么?

Cal*_*lum 7

绑定只是过于宽泛,因为它与您使用Java的泛型表达一样接近.

你真正想要的是<the immediate superclass of T>; 但是在Java的泛型中没有办法写出来.也没办法写<? super T excluding T>.<? super T>就像Java的泛型工作方式一样,你可以获得特定的信息.

对于它的价值,你可以保证你得到的类将成为有问题的超类 - 无论它的类型是什么.


Lou*_*man 5

Java泛型无法指定"某些超类而不是类本身".因此,提供的界限是您可以指定的最佳界限.