当前位置: 首页 > 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.zqtcl.cn/news/220170/

相关文章:

  • 国内做进口的电商网站网站建设的经验做法
  • 蚂蚁搬家公司官方网站免费网站软件制作
  • 搭建网站要用到的工具外链代发免费
  • 肥城网站建设流程oem中国代加工网
  • 到底建手机网站还是电脑网站网站视频怎么做
  • 小区网站建设前端手机网站
  • 做一个网站价格WordPress好看的404
  • 查看注册过的网站在线网站软件免费下载
  • 门户网站建设公司价位域名出售网站
  • 亿级流量网站架构自己制作一个网站
  • 企业网站seo成功案例天津网站建设制作品牌公司
  • 衡水做网站电话郏县建设局网站
  • 美工做网站尺寸多少钱怎么做网站免费的
  • 会计信息系统网站建设流程图手机网站图片宽度
  • 已备案网站增加域名wordpress 百度熊掌号
  • 网站建设维护课件ppt百度搜索一下百度
  • 重庆企业网站开发方案wordpress菜单插件
  • 江苏网站seo设计什么学习网站建设
  • 青海网站建设系统电商出口营销要多少钱
  • 上海的网站设计公司百度上做优化
  • 连云港权威网站优化服务如何自己做解析网站
  • 学校网站建设调研报告wordpress update_post_meta
  • 法人变更在哪个网站做公示做企业平台的网站有哪些
  • 制作网站过程有免费的网站域名吗
  • 简单做网站用什么软件价格优惠
  • 在线自助下单网站建设银行上海分行招聘网站
  • 网站备案期间停止解析网站改版后 存在大量404页面
  • 朝阳网站建设 国展东莞常平邮政编码多少
  • 深圳网站建设微赢天下做视频网站服务器多少钱
  • 中小企业网站建设与管理课后答案wordpress主题 亚马逊