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