当前位置: 首页 > news >正文

建网站业务员南京编程培训机构

建网站业务员,南京编程培训机构,宁波自助建站公司,医疗做网站作者 | 阿Q来源 | 阿Q说代码事情是这样的#xff1a;对话中的截图如下#xff1a;看了阿Q的解释#xff0c;你是否也和“马小跳”一样存在疑问呢#xff1f;请往#x1f447;看我们都知道在java中#xff0c;只要是类型兼容#xff0c;就可以将一种类型的对象分配给另一… 作者 | 阿Q来源 | 阿Q说代码事情是这样的对话中的截图如下看了阿Q的解释你是否也和“马小跳”一样存在疑问呢请往看我们都知道在java中只要是类型兼容就可以将一种类型的对象分配给另一种类型的对象。比如可以将一个Integer类型的对象分配给Object类型的对象因为Object 是Integer的超类。Object someObject  new Object(); Integer someInteger  new Integer(10); someObject  someInteger; //OK在面向对象中我们把它称之为 is a 的关系。因为Integer是Object的一种子类所以允许被赋值。又因为Integer也是Number的一种子类所以下边的代码也是有效的public void someMethod(Number n) { /* ... */ }someMethod(new Integer(10));   // OK someMethod(new Double(10.1));   // OK当然泛型也是如此在执行泛型类型调用时将Number作为其类型参数传递如果参数是Number的子类型则允许任何后续的add调用BoxNumber box  new BoxNumber(); box.add(new Integer(10));   // OK box.add(new Double(10.1));  // OK现在我们来看以下代码public void boxTest(BoxNumber n) { /* ... */ }该方法接收什么类型的参数呢通过该方法大家肯定知道它的参数类型为BoxNumber但是大家思考一个问题你认为BoxInteger 和BoxDouble类型的参数可以传入吗答案是否定的。尽管Integer是Number的子类型但BoxInteger 和BoxDouble不是BoxNumber的子类它俩的父类对象是Object。文首的对话表达的就是这个意思。那么问题来了当类的泛型相关时如何在两个泛型类之间创建类似子类型的关系呢例如如何让BoxInteger 和BoxDouble变得与BoxNumber有关呢为了搞懂这个问题我们先来了解一下同一类型的对象是如何实现子类型化的吧。通过分析源码我们可以发现ArrayListE 实现了 ListEListE 继承了CollectionE所以ArrayListString是ListString的子类型 ListString是 CollectionString的子类型。因此当我们在传递参数时ArrayListString类型的是可以给ListE或者CollectionE传递的。只要不改变类型参数类型之间的子类型关系就会保留。如果我们想要定义我们自己的列表接口PayloadList使得泛型类型P的可选值与每个元素相关联可以定义如下interface PayloadListE,P extends ListE {void setPayload(int index, P val);... }则PayloadListString,String、PayloadListString,Integer、PayloadListString,Exception都是ListString的子类型。小结可以通过继承泛型类或者实现接口来对其进行子类型化。搞懂了子类型化的问题我们回到“如何在两个泛型类之间创建类似子类型的关系“的问题。泛型类或者接口并不会仅仅因为它们的类型之间有关系而变得相关如果要达到相关我们可以使用通配符来创建泛型类或接口之间的关系。BoxInteger 和BoxNumber的父类对象其实是Box?为了在这些类之间创建关系以便代码可以通过BoxInteger访问BoxNumber的方法可以使用上限通配符:Box? extends Integer initBox  new Box(); Box? extends Number numberBox  initBox; // OK. Box? extends Integer is a subtype of Box? extends Number因为Integer是Number的子类型numberBox的泛型是Number对象子类所以在intBox和numberBox之间存在关系。图为用上限和下限通配符声明的几个类之间的关系。往期推荐Redis 缓存击穿失效、缓存穿透、缓存雪崩怎么解决如果被问到分布式锁应该怎样回答三分钟教你用 Scarlet 写一个 WebSocket AppJava 底层知识什么是 “桥接方法” 点分享点收藏点点赞点在看
http://wiki.neutronadmin.com/news/377950/

相关文章:

  • 有没有傻瓜式建设网站有哪些网站可以做推广
  • 开源做网站需要申请账号吗有做网站需求的客户
  • 哈尔滨建站软件百度官方营销推广平台官网
  • 企业门户网站建设方案专门做恐怖电影的网站
  • 经典wordpress网站asp源码网站
  • 婚庆网站建设总结网站制作评价
  • 企业网站推广的重要性dw静态网页制作
  • 沈阳微网站制作百度网页游戏大厅
  • 湖南微信网站wordpress调用文章位置
  • 营销网站建设苏州电商系统开发商
  • 做的网站错位怎么办sns类网站有哪些
  • 广东长海建设工程有限公司网站专业做企业网站
  • 厦门掘金网站建设阿里云多网站建设
  • 怎么做付款链接网站网站营销费用
  • 做网站电话销售如何运营电商平台
  • 智慧团建网站登录平台手机版文章修改网站
  • 门户网站底部如何做好网络宣传
  • 免费微信网站模板下载工具外贸公司几个网站
  • 网站顾客评价微信公众管理平台
  • wordpress模板建站济南建设职业技术学院
  • 陇南市建设局网站公示做pc端网站教程
  • 汉中网站制作汕头建设免费网站
  • 贵州飞乐云毕节网站建设沧州网站建设制作
  • 网站外链有什么用如何做网站demo
  • 网站建站网站建站用js做的个人酷炫网站
  • 网站排名必做阶段性seo策略学了3个月ui好找工作吗
  • 连州市网站建设网上哪个网站教做西点
  • 镇江网站建设国内顶尖的公司
  • 高档手表网站wordpress 制作企业站
  • 项城网站制作多少钱如何查域名备案信息查询