泛型类和通配符的java上界
class Gen <T super Number> // 1 // IS NOT ALLOWED
void Demo( Gen <? super Number> ob) // 2 // IS ALLOWED // Gen is a generic class
为什么第一条语句会导致编译时错误,而第二条语句工作正常
你可以在下面搜索框中键入要查询的问题!
class Gen <T super Number> // 1 // IS NOT ALLOWED
void Demo( Gen <? super Number> ob) // 2 // IS ALLOWED // Gen is a generic class
为什么第一条语句会导致编译时错误,而第二条语句工作正常
# 1 楼答案
第一个例子是泛型类型。第二个例子是参数化类型。它们是不同的东西
泛型类型的类型参数的下限不能有任何用处。因此,它在Java中不是“一件事”
然而,第二个示例的意思是:“类型
Gen<T>
的任何参数化,其中类型参数是数字的超类型”。它很有用,因为它允许泛型类型的多形性†通过提供"restricted instantiation",它们实际上可能用途有限,但被认为不够有用,不允许使用