MST

星途 面试题库

面试题:Java中多重通配符在泛型中的应用

假设有一个方法,接收一个List集合作为参数,要求这个集合既可以存放Integer类型,也可以存放Double类型,用Java泛型多重通配符如何实现这个方法的参数定义,并简述其原理。
23.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 方法参数定义
public void method(List<? extends Number> list) {
    // 方法体
}
  1. 原理简述
    • ? extends Number 表示类型通配符,? 代表一个未知类型。这里的 extends 关键字表示该未知类型是 Number 类或者 Number 类的子类。
    • IntegerDouble 都是 Number 的子类,所以 List<? extends Number> 这样的参数类型定义可以接收既包含 Integer 类型元素,又包含 Double 类型元素的 List 集合。这是因为通过这种通配符的定义,Java 泛型机制可以保证方法内部对集合元素的操作是安全的,因为所有元素都至少是 Number 类型,能使用 Number 类定义的方法。