- Java泛型教程
- Java泛型 - 首页
- Java泛型 - 概述
- Java泛型 - 环境设置
- 示例 - 泛型类
- Java泛型 - 泛型类
- 类型参数命名约定
- Java泛型 - 类型推断
- Java泛型 - 泛型方法
- Java泛型 - 多个类型参数
- Java泛型 - 参数化类型
- Java泛型 - 原始类型
- 示例 - 有界类型
- 有界类型参数
- Java泛型 - 多重界限
- 示例 - 集合
- Java泛型 - 泛型列表
- Java泛型 - 泛型集合
- Java泛型 - 泛型映射
- 示例 - 通配符
- 上界通配符
- 泛型 - 无界通配符
- 下界通配符
- 泛型 - 通配符使用指南
- 类型擦除
- Java泛型 - 类型擦除
- Java泛型 - 有界类型擦除
- 无界类型擦除
- Java泛型 - 方法擦除
- 泛型的限制
- Java泛型 - 不支持原始类型
- Java泛型 - 不支持实例化
- Java泛型 - 不支持静态字段
- Java泛型 - 不支持强制类型转换
- Java泛型 - 不支持instanceOf
- Java泛型 - 不支持数组
- Java泛型 - 不支持异常
- Java泛型 - 不支持重载
- Java泛型有用资源
- Java泛型 - 快速指南
- Java泛型 - 有用资源
- Java泛型 - 讨论
Java泛型 - 上界通配符
问号(?)表示通配符,在泛型中代表未知类型。有时您可能希望限制允许传递给类型参数的类型的种类。例如,对数字进行操作的方法可能只想接受Number或其子类的实例。
要声明上界通配符参数,请列出 ?,然后是 extends 关键字,然后是其上界。
示例
下面的示例说明了如何使用 extends 指定上界通配符。
package com.tutorialspoint;
import java.util.Arrays;
import java.util.List;
public class GenericsTester {
public static double sum(List<? extends Number> numberlist) {
double sum = 0.0;
for (Number n : numberlist) sum += n.doubleValue();
return sum;
}
public static void main(String args[]) {
List<Integer> integerList = Arrays.asList(1, 2, 3);
System.out.println("sum = " + sum(integerList));
List<Double> doubleList = Arrays.asList(1.2, 2.3, 3.5);
System.out.println("sum = " + sum(doubleList));
}
}
这将产生以下结果:
输出
sum = 6.0 sum = 7.0
广告