首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么方法中的参数"List<?super Integer> myList“可以接受新的numberList = ArrayList<Number> ArrayList<>();

在Java中,泛型是一种参数化类型的机制,它可以在编译时期检查类型的安全性,并提供更好的代码重用性和可读性。在方法中使用通配符"?super Integer"表示可以接受任何类型为Integer或其父类的List。

当我们声明一个方法参数为"List<?super Integer> myList"时,它表示这个方法可以接受一个元素类型为Integer或其父类的List。这是因为Java中的继承关系是具有传递性的,即如果一个类是另一个类的子类,那么它也是另一个类的父类。

在这个例子中,我们声明的参数类型是"List<?super Integer>",表示可以接受一个元素类型为Integer或其父类的List。而"numberList = ArrayList<Number>()"创建的是一个元素类型为Number的ArrayList,而Number是Integer的父类。因此,这个numberList符合"List<?super Integer>"的要求,可以作为参数传递给方法。

总结起来,"List<?super Integer> myList"可以接受"numberList = ArrayList<Number>()",是因为Number是Integer的父类,而"List<?super Integer>"可以接受元素类型为Integer或其父类的List。这样设计的好处是可以提高代码的灵活性和重用性,使得方法可以接受更多类型的参数,而不仅仅局限于Integer类型。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅为示例,实际使用时请根据具体需求选择适合的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 8 Predicate 函数接口

Predicate 函数接口同之前介绍 Function 接口一样,是一个函数式接口,它可以接受一个泛型 参数,返回值为布尔类型。...Predicate Stream filter Stream filter() 方法是通过接收一个 Predicate 函数接口实现。 示例:过滤出集合,字符串长度为 4 字符串。...Predicate and 使用 and() 方法可以让前后两个 Predicate 判断条件一起生效。 示例 1:过滤数字集合,数字大小在 5 至 9 之间数字。...Predicate 链式编程 Predicate or() ,and(),negate() 方法可以随意组合 Predicate,组合后判断逻辑是从左到右,从前到后,顺次判断。...Predicate 接受一个参数,而 BiPredicate 可以接受两个不同类型参数

1.6K30

Java泛型和通配符那点事

形式类型参数与实际类型参数之间关系类似于形式方法参数与实际方法参数之间关系,只是类型参数表示类型,而不是表示值。  泛型类类型参数几乎可以用于任何可以使用类名地方。...下面的代码是无效:  List intList = new ArrayList();  List numberList = intList; //...如果可以List赋给List,下面的代码就会违背泛型应该提供类型安全:  List intList = new ArrayList<Integer...方法可以被泛型化,不管它们定义在其中类是不是泛型化。  泛型类在多个方法签名间实施类型约束。在List,类型参数V出现在get()、add()、contains()等方法签名。...类型参数V被判断为由Number限制。在没有类型限制时,假设类型参数由Object限制。这就是为什么前一屏泛型方法 例子,允许List.get()在List<?

1.6K50

Java 泛型:概念、语法和应用

list = new ArrayList(); list.add(78); list.add(87); list.add(99);...表示,表示可以接受任意类型参数。例如: List myList; 上述代码,我们定义了一个泛型列表 List,并使用类型通配符 ? 表示可以接受任何类型数据。 4....例如: class MyGenericClass {} 上述代码,我们定义了一个泛型类型参数 T,并使用上界限制 extends Number 表示类型参数必须是...super Integer> myList) {} 上述代码,我们定义了一个方法 myMethod,并使用下界限制 super Integer 表示方法参数必须是 Integer 类型或其父类类型列表...在方法声明 ,T 表示泛型类型参数,使得该方法可以接受任意类型参数并且不需要进行类型转换。

18020

深入理解java泛型

泛型和协变 有关协变和逆变详细说明可以参考: 深入理解协变和逆变 这里我再总结一下,协变和逆变只有在类型声明类型参数里才有意义,对参数方法没有意义,因为该标记影响是子类继承行为,而方法没有子类...Java数组就是协变,比如IntegerNumber子类,那么Integer[]也是 Number[]子类,我们可以在需要 Number[] 时候传入 Integer[]。...接下来我们考虑泛型情况,List 是不是 List父类呢?很遗憾,并不是。 我们得出这样一个结论:泛型不是协变为什么呢?...我们举个例子: List integerList = new ArrayList(); List numberList = integerList;...可以添加任意Number类型,比如Float,这样就违背了泛型初衷,向Integer list添加了Float。

40910

Arrays.asList 解析

说明 asList 是 java.util.Arrays 类一个方法 public static List asList(T... a) { return new ArrayList...(E[] array) { a = Objects.requireNonNull(array); } 参数接受是一个数组,使用java.util.Objects 对象requireNonNull...来判断是否为空 如果为空则直接抛出空指针异常,此种判空方式常用于构造函数参数判断 基本用法 List list = Arrays.asList("Apple"); asList 是一个静态方法...1 2 3 任意一个值,而是一个hashcode ,这就说明这个list 唯一元素是一个array对象 陷阱二: 假如我创建了一个指定元素list,那么我能否对这个list进行 元素添加等操作呢...); myList.add("Guava"); } } 可以尝试new 一个ArrayList接受 Arrays.asList产生结果 改观三: 使用自己实现将数组转换为列表

70130
领券