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

商城网站怎么自己搭建手机搭建网站教程

商城网站怎么自己搭建,手机搭建网站教程,专业网页制作室,wordpress会务网站模版背景 周五本该是愉快的#xff0c;可是今天花了一个早上查问题#xff0c;为什么要花一个早上#xff1f;我把原因总结为两点#xff1a; 日志信息严重丢失#xff0c;茫茫代码毫无头绪。对泛型的认识不够#xff0c;导致代码出现了BUG。第一个原因可以通过以后编码谨慎的… 背景 周五本该是愉快的可是今天花了一个早上查问题为什么要花一个早上我把原因总结为两点 日志信息严重丢失茫茫代码毫无头绪。对泛型的认识不够导致代码出现了BUG。第一个原因可以通过以后编码谨慎的打日志来解决我们今天主要来一起回顾下JAVA泛型基础。 一个小栗子 先看下面一个例子test1实例化一个List容器的时候没有指定泛型参数那么我们可以往这个容器里面放入任何类型的对象这样是不是很爽但是当我们从容器中取出容器中的对象的时候我们必须小心翼翼因为容器中的对象具有运行时的类型信息这意味着你不能够将一个带有运行时类型信息的对象赋值给另一个类型否则ClassCastException。 Test public void test1() throws Exception {List list new ArrayList();list.add(float.lu);list.add(1);String name (String) list.get(0); int num (Integer) list.get(1); System.out.println(String.format(name[%s], num[%s], name, num)); } 上面的代码没问题可以很好地编译和运行通过问题是我必须要事先很清楚地知道容器中的索引为0的对象是什么类型索引为1的对象是什么类型很显然这在实际应用中是不切实际的也是一种很不靠谱的做法那么这个问题如何解决呢泛型。 引入泛型 为了解决这个问题我们引入泛型下面代码可以看出与上面不同的是我们在实例化容器的时候加了String这个东西这个东西的学名叫做泛型参数就像普通方法带有参数一样interface ListE中的E为形式参数、而String为实参。 Test public void test2() throws Exception { ListString list new ArrayListString(); list.add(a); list.add(1)//1 } 引入泛型后我们规定这个容器中只能存放类型为字符串类型的对象好的编译器可以识别泛型并帮我们检查编译错误上面的代码中1处会出现编译错误。注意泛型信息仅仅存在于编译期间编译器可以通过泛型信息来对代码是否存在违规行为编译错误来进行检查当编译器将代码编译为字节码之后泛型信息将不复存在然而对象的运行时信息仍然是有的这就解释了为什么会出现ClassCastException。 别高兴太早 有了泛型我们可以让代码安全地通过编译并且我们认为他是安全的了嘿嘿是否就真的安全了呢是否就能和ClassCastException说拜拜了呢答案是NO。看看下面这段代码 Test public void test3() throws Exception {ListString list new ArrayListString(); list.add(a); list.add(b); List _list list; ListInteger integerList _list; for (Integer item : integerList) { System.out.println(String.format(item[%s], item)); } } 上面这段代码编译没有问题我们没有直接将泛型参数为String的容器赋值给泛型参数为Integer的容器而是花了点点小心思我们现将list赋值给_list_list生命为可以存储任何类型也就相当于无特定类型而后我们又把_list赋值给integerList容器integerList容器被声明为只能存储类型为Integer的对象。悲催的是这段代码在运行的时候报了ClassCastException很明显我们知道在迭代integerList容器中的对象的时候这些对象是有运行时类型信息的当带有String类型信息的对象赋值给Integer的时候显然就报错了。这一切看起来似乎没问题符合逻辑但是有一个问题我们还没有问为什么会没有编译错误   泛型术语 在学习数学的时候我们往往会对一个证明题进行论证而论证之前我们手上往往会有一些不需要证明的已知定理下面这些“定理”将被用来直接回答上一节中遗留的问题。 ListE被称作泛型类型。ListE中的E被称为类型变量或类型参数。ListString被称为参数化类型。ListString中的String被称为实际类型参数。ListE中的年typeof。List被称为原始类型。参数化类型可以引用一个原始类型对象编译报告警告。原始类型可以引用一个参数化类型对象编译报告警告。由上可知ListInteger integerList _list;可以通过编译。   看清本质 经过上面的一些小波折我们了解一些关于泛型的本质泛型是给javac编译器使用的javac是JAVA的编译器而泛型可以让代码在编译期间确定类型安全比如我们告诉编译器某个容器只能存储某种类型的对象那么编译器会为我们好好地检查确保类型安全但是安全是相对的只要我们逃过编译器我们就有一百种方法让代码ClassCastException比如反射。同时编译之后参数化类型在运行时没有任何泛型信息也就是为什么List.class和ListString.class是同一个东西。除了参数化类型之外容器中的对象在运行的时候是有类型信息的也就是为什么会ClassCastExcetion。关于泛型还有很多内容这里不做多讲文中有误也欢迎留言讨论。 转载于:https://www.cnblogs.com/tv151579/p/7582288.html
http://www.pierceye.com/news/220170/

相关文章:

  • 东莞建设质监网站建设网站方式有哪些
  • 中学网站建设书最好的网站设计开发公司
  • 下载网站源码聊城seo培训
  • 专用于做网站公司推广的方式有哪些
  • 网站如何规划c 手机网站开发模板
  • 哈尔滨网站建设优化公司室内设计网站
  • 厚街做网站的公司wordpress出现百度抓取404页面
  • 四川南充网站建设西安网站建设推广优化
  • 做企业门户网站都连连电商网站开发公司
  • 微商城网站建设价位公司要想做个网站这么弄
  • wordpress文章所属栏目关键词排名优化易下拉教程
  • 网站主题咋做免费网页模板素材网站
  • 网站建设对旅游意义公众号运营策划
  • 成都专业网站制作关于论文网站开发参考文献
  • 免费做代理郑州seo招聘
  • 做网站系统更新后wordpress
  • 兰州网站建站2024免费网站推广
  • 深圳模板建站企业网站出现搜索
  • app开发网站模板该网站正在紧急升级维护中
  • 公众号编辑器365保定seo推广
  • 陕西整站关键词自然排名优化外贸获客渠道有哪些
  • 网站策划需要具备什么福州高端建站
  • 域名注册没有网站美食网页设计素材图片
  • wordpress网站在哪里修改密码ps做网站要求高吗
  • 企业网站带商城源码Audiology wordpress
  • 星月教你做网站东营城乡建设局官网
  • 镇江网站建设开发旺店通erp系统
  • 体育直播网站建设深圳制作小程序
  • 手机微信管理系统搜索引擎优化的流程是什么
  • 壁纸公司网站源码做网站价格表