Java 泛型类和通配符的上界 不允许使用类Gen//1// void Demo(Gen

Java 泛型类和通配符的上界 不允许使用类Gen//1// void Demo(Gen,java,generics,wildcard,super,Java,Generics,Wildcard,Super,第一个示例是泛型类型。第二个示例是参数化类型。它们是不同的东西 泛型类型是对类型进行参数化的类型的定义。可以通过为这些类型参数提供类型参数来调用泛型类型 参数化类型是使用类型参数调用泛型类型,无论这些类型参数是类型还是通配符 泛型类型的类型参数的下限不能有任何用处†。它不是,因此在Java中是“一件事” 然而,第二个示例的意思是:“类型Gen的任何参数化,其中类型参数是数字的超类型”。它非常有用,因为它允许泛型类型的多模态 †它们实际上可以通过提供来限制使用,但被认为不够有用,不允许使用。它

第一个示例是泛型类型。第二个示例是参数化类型。它们是不同的东西

  • 泛型类型是对类型进行参数化的类型的定义。可以通过为这些类型参数提供类型参数来调用泛型类型
  • 参数化类型是使用类型参数调用泛型类型,无论这些类型参数是类型还是通配符
泛型类型的类型参数的下限不能有任何用处†。它不是,因此在Java中是“一件事”

然而,第二个示例的意思是:“类型
Gen
的任何参数化,其中类型参数是数字的超类型”。它非常有用,因为它允许泛型类型的多模态


†它们实际上可以通过提供来限制使用,但被认为不够有用,不允许使用。

它很有用,因为它允许泛型类型的多态性
,参数化类型还有其他用途吗?@kevingomes。通配符参数化类型都与多态性有关。
Gen
不兼容赋值e与
Gen
,但
Gen
是。使用上/下界限制这些通配符可以限制多态集,这非常有用,因为它可以创建具有输入/输出参数的功能。
class Gen <T super Number>           // 1 // IS NOT ALLOWED

void Demo( Gen <? super Number> ob)  // 2 // IS ALLOWED // Gen is a generic class