MST

星途 面试题库

面试题:Java泛型边界与通配符的应用

假设有一个需求,需要定义一个方法,该方法可以接受一个列表,列表中的元素必须是Number的子类,同时这个方法要能够读取列表中的元素并进行求和操作。请使用Java泛型的通配符和边界来实现这个方法,并解释你的实现思路。
49.1万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.List;

public class GenericSum {
    public static double sum(List<? extends Number> list) {
        double total = 0;
        for (Number number : list) {
            total += number.doubleValue();
        }
        return total;
    }
}

实现思路

  1. 方法签名sum(List<? extends Number> list) 这里使用了通配符 ? 以及上界 extends Number,表示 list 可以是任何 Number 子类类型的列表。这样既保证了列表元素都是 Number 的子类,符合题目要求。
  2. 遍历求和:通过 for - each 循环遍历列表,使用 Number 类的 doubleValue() 方法将每个元素转换为 double 类型进行累加,最后返回累加结果。