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以外,常见的还有以下几种:
日常开发中什么时候用到泛型?那就多了,比如解析json的时候,正常情况下,后台返回的json基本格式都是相同的,但是里面字段各有不同,通过泛型传入不同的model,大大的提高了代码的可重用性和可维护性,为了以后的开发省去太多不必要的麻烦。
以上就是java泛型的使用方法总结,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 泛型
# 泛型的使用方法
# 泛型实例详解
# 实例分析Java泛型
# 重新理解Java泛型
# Java 基础详解(泛型、集合、IO、反射)
# 详谈Java泛型中T和问号(通配符)的区别
# Java编程探索之泛型擦除实例解析
# Java编程泛型限定代码分享
# Java 中利用泛型和反射机制抽象DAO的实例
# 通过代码理解java泛型
# 报错
# 的是
# 都是
# 来了
# 会有
# 都不
# 太多
# 的说
# 说了
# 如有
# 什么时候
# 这类
# 希望能
# 带来了
# 摸不着头脑
# 便可
# 仅仅是
# 好吧
# 几种
# 各有
相关文章:
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何选择建站程序?包含哪些必备功能与类型?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何用花生壳三步快速搭建专属网站?
为什么Go需要go mod文件_Go go mod文件作用说明
网站制作企业,网站的banner和导航栏是指什么?
,想在网上投简历,哪几个网站比较好?
如何通过服务器快速搭建网站?完整步骤解析
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何在建站之星绑定自定义域名?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
大连 网站制作,大连天途有线官网?
如何在Tomcat中配置并部署网站项目?
如何通过远程VPS快速搭建个人网站?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
制作销售网站教学视频,销售网站有哪些?
建站主机服务器选型指南与性能优化方案解析
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
营销式网站制作方案,销售哪个网站招聘效果最好?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何在阿里云ECS服务器部署织梦CMS网站?
h5在线制作网站电脑版下载,h5网页制作软件?
Python如何创建带属性的XML节点
ppt制作免费网站有哪些,ppt模板免费下载网站?
C#怎么使用委托和事件 C# delegate与event编程方法
如何快速搭建高效可靠的建站解决方案?
太平洋网站制作公司,网络用语太平洋是什么意思?
如何在阿里云通过域名搭建网站?
建站之星导航菜单设置与功能模块配置全攻略
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何选择CMS系统实现快速建站与SEO优化?
网站制作壁纸教程视频,电脑壁纸网站?
如何通过WDCP绑定主域名及创建子域名站点?
如何在景安服务器上快速搭建个人网站?
建站之星备案流程有哪些注意事项?
高防服务器如何保障网站安全无虞?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何基于PHP生成高效IDC网络公司建站源码?
如何通过虚拟主机空间快速建站?
制作网页的网站有哪些,电脑上怎么做网页?
如何选择美橙互联多站合一建站方案?
如何零成本快速生成个人自助网站?
如何高效利用亚马逊云主机搭建企业网站?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
如何设计高效校园网站?
如何通过虚拟机搭建网站?详细步骤解析
*请认真填写需求信息,我们会在24小时内与您取得联系。