论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
分布式数据库
›
Java 泛型上下限详解:以 Info 泛型类和方法实现为例 ...
Java 泛型上下限详解:以 Info 泛型类和方法实现为例
南飓风
论坛元老
|
2025-1-23 14:09:11
|
显示全部楼层
|
阅读模式
楼主
主题
1025
|
帖子
1025
|
积分
3075
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
本文将通过一个实际示例,来深入解说 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企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
南飓风
论坛元老
这个人很懒什么都没写!
楼主热帖
零信任介绍
容斥原理
开源SPL助力JAVA处理公共数据文件(txt ...
使用 Helm 安装 MQTT 服务器-EMQX ...
数理逻辑第1-3章
Ubuntu如何安装Mysql+启用远程连接[完 ...
dotnet 修复在 Linux 上使用 SkiaSharp ...
DOS窗口命令和单表简单查询
Java笔记(13) 简单的Lambda表达式 ...
.gitignore文件配置以及gitee提交报Pus ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
IOS
Mysql
程序人生
Postrge-SQL技术社区
Oracle
鸿蒙
DevOps与敏捷开发
linux
Java
快速回复
返回顶部
返回列表