我在java中学习了泛型。我可以理解泛型类型、原始类型、有界类型参数和类型推断。我在泛型中学习了通配符。通配符将?
未知类型表示为类型参数。虽然我将一个类定义为Company
,但编译器告诉它是一个未定义的类型参数。但是我传入List
了一个方法,这里不会出现错误。你能告诉我必须在哪里使用通配符及其用途吗?
Class Company<?> // error is occurred at this line
{
void sum(List<? extends Number> ls) //does not occur here
{ }
}
你能解释一下这些之间的区别吗?