当前位置: 首页 > 知识库问答 >
问题:

带最终上限的通配符

华泽语
2023-03-14

类型参数T不应由最终的类型整数限定。不能进一步扩展Final类型

为什么使用final类型作为通配符的上限完全可以,但对类型参数抛出警告?为什么Java甚至允许通配符被最终的上层类型所约束?

共有1个答案

澹台奇略
2023-03-14

不像类<?扩展Integer>

例如,它编译:

Class<? extends Number> numberClass = Integer.class;
Class<? extends Integer> integerClass = numberClass.asSubclass(Integer.class);

这不会:

Class<? extends Number> numberClass = Integer.class;
Class<Integer> integerClass = numberClass.asSubclass(Integer.class);
 类似资料:
  • 问题内容: 该问题的答案表明,当方法采用通配符通用类型时,可以访问或修改集合,但不能同时访问或修改集合。(凯西和伯特) 这是什么意思?“ 当方法采用通配符通用类型时,可以访问或修改集合,但不能同时访问两者 ”? 据我所知,方法do1具有d2只能访问但不能修改。d2的方法使c2可以被访问和修改,并且没有编译错误。 通用准则 问题答案: 该问题的答案表明,当方法采用通配符通用类型时,可以访问或修改集合

  • 有人能解释一下为什么以下两个示例中的第一个编译,而第二个不编译?请注意,唯一的区别是第一个显式限定了对x的引用。这个,而第二个没有。在这两种情况下,在初始化之前显然尝试使用最终字段x。 我本以为这两个样本会被完全平等地对待,从而导致两者都出现编译错误。 1) 2)

  • 我有下面的地图 有时有一个列表,有时有一个集合作为值。现在我想获取值,但有一个问题,它无法编译。 我知道我可以这样做: 但我有兴趣了解它应该如何与通用getOrDefault方法一起工作

  • 问题内容: 我试图了解下限和上限通配符的行为。 尝试编译以下代码时遇到问题。 为了弄清楚问题,我还尝试了下限通配符。幸运的是或不幸的是,代码可以很好地编译,但是却造成了很多混乱。 有人可以解释一下这两个代码段如何工作。如果有人可以提供其他示例/链接,那就太好了。 如果我在上面做错了什么,请纠正我。 提前致谢。 问题答案: 表示“未知类型”。 表示某种对象的集合。此“某种类型”可以是作为其子类或自身

  • 问号(?)代表通配符,代表泛型中的未知类型。 有时您可能希望限制允许传递给类型参数的类型。 例如,对数字进行操作的方法可能只想接受Number或其子类的实例。 要声明一个上限的Wildcard参数,请列出?,后跟extends关键字,后跟其上限。 例子 (Example) 以下示例说明了如何使用extends来指定上限通配符。 package com.wenjiangs; import java.

  • null 编译,我真的不明白为什么。基本上与第1行相同的问题。是的超类,如何将超类的成员放入此中? 编译。与第1行相同的问题。