List<?扩展SomeClass>是什么意思?



我在protobuf生成的java文件中看到了这个定义:

java.util.List<? extends xxx.yyy.zzz.proto.BasicMessage.DestInfoOrBuilder> foo();

但是<?extends的剂量是什么意思? 我能理解List<SomeClass>我不能理解List<? extends SomeClass>..

在 Java 泛型编程中,使用通配符时有两种边界。

1)上限通配符 .比如:ArrayList <? extends Number> p,这意味着你可以使用任何扩展数字来填充数组列表。

2)下界通配符。如: ArrayList<? super Integer> list ,这意味着您必须传递 Integer 的超类(例如 Number、Object)中的任何内容才能填充 ArrayList。

有关详细信息,请参阅通配符。

这是一个泛型声明。

它用于在编译时检查类型。您可以将任何对象放入列表中,但这会使维护更加困难,并且如果使用不当,可能会导致ClassCastException

<? extends xxx.yyy.zzz.proto.BasicMessage.DestInfoOrBuilder>的意思是"允许每个扩展DestInfoOrBuilder类"。

java generic code中,问号 (?) 称为通配符,表示未知类型。通配符可用于多种情况:作为参数、字段或局部变量的类型;有时作为返回类型(尽管更具体的编程实践更好)。通配符从不用作泛型方法调用、泛型类实例创建或超类型的类型参数。

有关更多信息,请阅读 Java 泛型的通配符和泛型:通配符运算符

相关内容

  • 没有找到相关文章

最新更新