java 泛型的详解及实例
发布时间 - 2026-01-11 03:01:06 点击率:次java 泛型的详解及实例

Java在1.5版本中增加了泛型,在没有泛型之前,从集合中读取每一个对象都需要进行强转,如果一不小心插入了类型错误的对象,在运行时就会报错,给日常开发带来了很多不必要的麻烦,比如以下代码:
public class TestGeneric
{
public static void main(String[] args) {
List list = new ArrayList();
list.add(" name:");
list.add(" zero,");
list.add(" age:");
list.add(24);
list.add(false);
for (Object object : list)
{
String test = (String) object;
System.out.print(test);
}
}
}
name:zero,age:Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at com.zm.zero.test.TestGeneric.main(TestGeneric.java:18)
经过运行,立马脾气来了,小样,来本事啦!
List和List< Object>有什么区别,不严格的说,前者逃避了泛型检查,后者告诉编译器,持有一个Object类型的对象,属于编译器的一种优化,在编译的时候不通过来增加类型的安全性。如果上述代码使用的是泛型,便可以避免这类事故的发生,在Java的编程思想中,一直在提倡“出错之后尽快发现”,那么编译时发现报错肯定优先于运行时的报错,此处做了一个简单的修改:
此处仅仅是把List改成了List< String>去检查add时候值的类型,如果add时候值的类型是非法的,编译时便会报错。
对于创建泛型对象,几乎每个开发者都会使用过,比如最初学的Class.forName()返回的对象就是Class< T>,对于泛型方法,会有部分开发者显得有点摸不着头脑,好吧,啥废话都不说了,就是干,先代码再上图:
public class JsonToModel
{
/**
*
* @param msg
* @param t
* model类
* @return
*/
public static <T extends BaseModel<T>> T getJsonToModel(Message msg, Class<T> t) {
// TODO Auto-generated method stub
try
{
JsonObject jsonObject = new JsonParser().parse(msg.obj.toString())
.getAsJsonObject().getAsJsonObject("info");
return GsonHelper.toType(jsonObject.toString(), t);
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
除了T以外,常见的还有以下几种:
- E - Element (在集合中使用,因为集合中存放的是元素)
- K - Key(键)
- V - Value(值)
- N - Number(数值类型)
- ? - 表示不确定的java类型
日常开发中什么时候用到泛型?那就多了,比如解析json的时候,正常情况下,后台返回的json基本格式都是相同的,但是里面字段各有不同,通过泛型传入不同的model,大大的提高了代码的可重用性和可维护性,为了以后的开发省去太多不必要的麻烦。
以上就是java泛型的使用方法总结,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 泛型
# 泛型的使用方法
# 泛型实例详解
# 实例分析Java泛型
# 重新理解Java泛型
# Java 基础详解(泛型、集合、IO、反射)
# 详谈Java泛型中T和问号(通配符)的区别
# Java编程探索之泛型擦除实例解析
# Java编程泛型限定代码分享
# Java 中利用泛型和反射机制抽象DAO的实例
# 通过代码理解java泛型
# 报错
# 的是
# 都是
# 来了
# 会有
# 都不
# 太多
# 的说
# 说了
# 如有
# 什么时候
# 这类
# 希望能
# 带来了
# 摸不着头脑
# 便可
# 仅仅是
# 好吧
# 几种
# 各有
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel中的withCount方法怎么高效统计关联模型数量
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Android 常见的图片加载框架详细介绍
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
大连 网站制作,大连天途有线官网?
青岛网站建设如何选择本地服务器?
如何确保FTP站点访问权限与数据传输安全?
Laravel如何使用Sanctum进行API认证?(SPA实战)
如何用5美元大硬盘VPS安全高效搭建个人网站?
中国移动官方网站首页入口 中国移动官网网页登录
Python文件流缓冲机制_IO性能解析【教程】
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何在云主机上快速搭建网站?
新三国志曹操传主线渭水交兵攻略
大同网页,大同瑞慈医院官网?
如何在建站之星绑定自定义域名?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
网站制作软件有哪些,制图软件有哪些?
如何用景安虚拟主机手机版绑定域名建站?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
java中使用zxing批量生成二维码立牌
高端智能建站公司优选:品牌定制与SEO优化一站式服务
高端网站建设与定制开发一站式解决方案 中企动力
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel如何使用模型观察者?(Observer代码示例)
5种Android数据存储方式汇总
高防服务器租用首荐平台,企业级优惠套餐快速部署
香港服务器租用每月最低只需15元?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
JavaScript Ajax实现异步通信
nginx修改上传文件大小限制的方法
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
详解CentOS6.5 安装 MySQL5.1.71的方法
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
黑客如何通过漏洞一步步攻陷网站服务器?
Laravel如何优化应用性能?(缓存和优化命令)
如何为不同团队 ID 动态生成多个非值班状态按钮

