ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Java 泛型上下限详解:以 Info 泛型类和方法实现为例
[打印本页]
作者:
南飓风
时间:
2025-1-23 14:09
标题:
Java 泛型上下限详解:以 Info 泛型类和方法实现为例
本文将通过一个实际示例,来深入解说 Java 泛型中的上下限及其应用场景。在这个示例中,我们会实现一个泛型类 Info 和两个泛型方法 upperLimit 和 lowerLimit,并表明其工作机制。
1. 什么是 Java 泛型上下限?
Java 泛型的上下限是通过关键字 extends 和 super 定义的。它们的作用是对泛型类型参数施加束缚,规定可接受的类型范围。
上限通配符 ? extends T
:限定泛型类型必须是 T 类型或其子类。
下限通配符 ? super T
:限定泛型类型必须是 T 类型或其父类。
2. 示例场景
我们会创建一个泛型类 Info 用于存储数据,随后实现两个方法:
upperLimit
:接收一个 Info 类型对象,其泛型类型是 Number 或其子类,返回存储的数据。
lowerLimit
:接收一个 Info 类型对象,其泛型类型是 String 或其父类,返回存储的数据。
最后,通过一个主函数对方法举行验证。
3. 代码实现
(1)泛型类 Info
起首,我们实现 Info 类:
class Info<T> {
private T data;
public void set(T data) {
this.data = data;
}
public T get() {
return data;
}
}
复制代码
T 是一个泛型参数,表示可以存储任意类型的数据。
set 方法用于设置数据。
get 方法用于获取数据。
(2)解决方案类 Solution
接下来,我们实现 Solution 类,其中包含 upperLimit 和 lowerLimit 方法。
class Solution {
public Number upperLimit(Info<? extends Number> info) {
// 直接返回 info 中存储的数据
return info.get();
}
public Object lowerLimit(Info<? super String> info) {
// 直接返回 info 中存储的数据
return info.get();
}
}
复制代码
upperLimit 方法
:接收一个泛型类型为 ? extends Number 的 Info 对象,表示该对象只能存储 Number 类型或其子类(比方 Integer、Double 等)。
lowerLimit 方法
:接收一个泛型类型为 ? super String 的 Info 对象,表示该对象只能存储 String 类型或其父类(比方 Object)。
(3)主函数
最后,在主函数中测试以上方法。
public class Main {
public static void main(String[] args) {
// 创建 Solution 对象
Solution solution = new Solution();
// 测试 upperLimit 方法
Info<Integer> info = new Info<>();
info.set(200); // 设置值为 200
Number number = solution.upperLimit(info);
if (!number.equals(200)) {
System.out.println("Verification failure.");
return;
}
// 测试 lowerLimit 方法
Info<String> infos = new Info<>();
infos.set("Xx"); // 设置值为 "Xx"
Object obj = solution.lowerLimit(infos);
if (!obj.equals("Xx")) {
System.out.println("Verification failure.");
return;
}
System.out.println("Verification passed.
");
}
}
复制代码
4. 运行结果
假如实现无误,运行步伐后会输出:
Verification passed.
复制代码
5. 解析
泛型上限 ? extends Number
:
在 upperLimit 方法中,Info<? extends Number> 表示该 Info 对象只能存储 Number 或其子类的数据。
在实际代码中,传入了 Info<Integer> 对象,Integer 是 Number 的子类,因此符合限定。
泛型下限 ? super String
:
在 lowerLimit 方法中,Info<? super String> 表示该 Info 对象只能存储 String 或其父类的数据。
在实际代码中,传入了 Info<String> 对象,String 符合限定。
6. 总结
通过上述代码,我们可以看到:
泛型上限 ? extends T
用于限定泛型类型为某个类型 T 或其子类。
泛型下限 ? super T
用于限定泛型类型为某个类型 T 或其父类。
Info 泛型类
是存储数据的基础,其泛型特性使其能适应多种数据类型。
通过这些特性,Java 的泛型机制让代码更安全、更灵活,同时淘汰了类型转换的贫苦。在实际开发中,善用泛型上下限可以帮助我们构建更健壮的代码。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4