全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 泛型的详解及实例

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泛型  # 报错  # 的是  # 都是  # 来了  # 会有  # 都不  # 太多  # 的说  # 说了  # 如有  # 什么时候  # 这类  # 希望能  # 带来了  # 摸不着头脑  # 便可  # 仅仅是  # 好吧  # 几种  # 各有 


相关文章: 电视网站制作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小时内与您取得联系。