Java 泛型:解开“Super”关键字之谜
尽管探索了有关泛型的各种资源,但您仍然会遇到关于 'Super' 的困惑。超级'关键字。让我们深入研究在 Java 泛型中使用“super”的复杂性来澄清这些疑虑。
1.揭开与“?”的矛盾super Number'
将集合声明为“List super Number>',您可能会假设它可以保存 Number 的父对象。然而,情况恰恰相反:可以添加整数,但不能添加对象。
原因在于捕获转换。 '列表'只能捕获可以扩展 Number 及其超类型的类型。由于 Object 是 Number 的超类,但不是扩展,因此无法捕获它。然而,Integer 是 Number 的子类型,因此可以相加。
2.用“List
编译 'test(sList);'失败,因为 'List
总之,'? super T' 表示该集合可以保存类型 T 或其任何扩展兼容超类的对象。但是,这并不包括所有超类型,仅包括那些扩展指定类型的超类型。
3.为什么是“”被禁止
Java 不允许 ''因为它会导致模棱两可的情况。例如,“List”可能会捕获“List
以上是Java 泛型:` 有什么用?超级`关键字?的详细内容。更多信息请关注PHP中文网其他相关文章!