小编Big*_*gIO的帖子

谁能用java中的有界通配符解释这段代码?

我知道我的问题可能看起来像重复的问题,但我已经阅读了许多类似的问题和答案,但我对下限 (? super) 特别感到困惑。请考虑这段代码。

 import java.util.*;
   public class Main {
  // just adds numbers to the List nums
   static void myadd(List<? super Number> nums){
    
    nums.add(1);
    nums.add(1.0f);
    nums.add(1.1);
    nums.add(3l);
  }
  public static void main(String[] args) {
      
      List empty= new ArrayList<>();
      myadd(empty);
      System.out.println(empty);
  }
}
Run Code Online (Sandbox Code Playgroud)

是执行它的链接。

根据甲骨文文档

下限通配符将未知类型限制为特定类型或该类型的超类型

Number类是 Double、Float、Integer、Long 和 Short 类的超类,那么为什么这个方法执行得很好呢? 此方法 (myadd) 应该仅适用于 Number 类或其超类型的直接实例的对象,而不适用于其子类。

我已阅读以下答案,但我的疑问仍不清楚。

  1. 了解 的上限和下限 ? 在 Java 泛型中
  2. Java 下限通配符

如果有人能解释我将不胜感激。

java lower-bound

0
推荐指数
1
解决办法
317
查看次数

标签 统计

java ×1

lower-bound ×1