【问题标题】:Class<? super T> in getSuperclass() Does it make sense?类<? super T> in getSuperclass() 有意义吗?
【发布时间】:2012-12-20 22:36:13
【问题描述】:
Class<? super T> getSuperclass()
Class类中的getSuperclass()返回一个类型为 super T>,也就是说Super的Class的类型参数可以是T或者它的任何一个Superclass,那么SuperClass的Class类型参数怎么会和子类的类型相同呢?
例如
Class<Manage>.class.getSuperclass()
不返回
Class<Manager>
完全没有..从来没有
这有意义吗?或者我在这里遗漏了什么?
【问题讨论】:
标签:
java
generics
wildcard
type-parameter
bounded-wildcard
【解决方案1】:
这个界限过于宽泛,因为它与你使用 Java 的泛型所能表达的一样接近。
你真正想要的是<the immediate superclass of T>;但是没有办法用 Java 的泛型来写。也没有办法写<? super T excluding T>。 <? super T> 与 Java 泛型的工作方式一样具体。
对于它的价值,你可以保证你得到的类将是有问题的超类——不管它的类型绑定是什么。
【解决方案2】:
Java 泛型无法指定“某些超类,但不是类本身。”因此,提供的界限是您可以指定的最佳界限。