仓酷云

标题: 了解下JAVA的未撑持的操纵 [打印本页]

作者: 若天明    时间: 2015-1-18 11:36
标题: 了解下JAVA的未撑持的操纵
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),
使用static(静态)数组Arrays.toList(),大概能将一个数组转换成List,以下所示:
  1. //:Unsupported.java
  2. //SometimesmethodsdefinedintheCollection
  3. //interfacesdontwork!
  4. packagec08.newcollections;
  5. importjava.util.*;
  6. publicclassUnsupported{
  7. privatestaticString[]s={
  8. "one","two","three","four","five",
  9. "six","seven","eight","nine","ten",
  10. };
  11. staticLista=Arrays.toList(s);
  12. staticLista2=Arrays.toList(
  13. newString[]{s[3],s[4],s[5]});
  14. publicstaticvoidmain(String[]args){
  15. Collection1.print(a);//Iteration
  16. System.out.println(
  17. "a.contains("+s[0]+")="+
  18. a.contains(s[0]));
  19. System.out.println(
  20. "a.containsAll(a2)="+
  21. a.containsAll(a2));
  22. System.out.println("a.isEmpty()="+
  23. a.isEmpty());
  24. System.out.println(
  25. "a.indexOf("+s[5]+")="+
  26. a.indexOf(s[5]));
  27. //Traversebackwards:
  28. ListIteratorlit=a.listIterator(a.size());
  29. while(lit.hasPrevious())
  30. System.out.print(lit.previous());
  31. System.out.println();
  32. //Settheelementstodifferentvalues:
  33. for(inti=0;i<a.size();i++)
  34. a.set(i,"47");
  35. Collection1.print(a);
  36. //Compiles,butwontrun:
  37. lit.add("X");//Unsupportedoperation
  38. a.clear();//Unsupported
  39. a.add("eleven");//Unsupported
  40. a.addAll(a2);//Unsupported
  41. a.retainAll(a2);//Unsupported
  42. a.remove(s[0]);//Unsupported
  43. a.removeAll(a2);//Unsupported
  44. }
  45. }///:~
复制代码
从中能够看出,实践只完成了Collection和List接口的一部分。残剩的办法招致了不受接待的一种情形,名为UnsupportedOperationException。鄙人一章里,我们会报告背例的具体情形,但在这里有需要举行一下复杂申明。这里的关头在于“汇合接口”,和新汇合库内的另外一些接口,它们都包括了“可选的”办法。在完成那些接口的汇合类中,大概供应、大概没有供应对那些办法的撑持。若挪用一个未获撑持的办法,就会招致一个UnsupportedOperationException(操纵未撑持背例),这标明呈现了一个编程毛病。
人人也许会以为奇异,不是说“接口”和基本类最年夜的“卖点”就是它们允诺这些办法能发生一些成心义的举动吗?上述背例损坏了谁人允诺——它挪用的一部分办法不但不克不及发生成心义的举动,并且还会中断程序的运转。在这些情形下,范例的所谓平安包管仿佛显得无价之宝!可是,情形并没有设想的那末坏。经由过程Collection,List,Set大概Map,编译器仍旧限定我们只能挪用谁人接口中的办法,以是它和Smalltalk仍是存在一些区分的(在Smalltalk中,可为任何对象挪用任何办法,并且只要在运转程序时才晓得这些挪用是不是可行)。除此之外,以Collection作为自变量的年夜多半办法只能从谁人汇合中读取数据——Collection的一切“read”办法都不是可选的。
如许一来,体系便可制止在计划时代呈现接口的抵触。而在汇合库的其他计划计划中,终极常常城市失掉数目过量的接口,用它们形貌基础计划的每种变更情势,以是进修和把握显得十分坚苦。有些时分,乃至难于捕获接口中的一切特别情形,由于人们大概计划出任何新接口。但Java的“不撑持的操纵”办法却到达了新汇合库的一个主要计划方针:易于进修和利用。可是,为了使这一办法真正无效,却需满意下述前提:
(1)UnsupportedOperationException必需属于一种“十分”事务。也就是说,关于年夜多半类来讲,一切操纵都应是可行的。只要在一些特别情形下,1、两个操纵才大概未获撑持。新汇合库满意了这一前提,由于尽年夜多半时分用到的类——ArrayList,LinkedList,HashList和HashMap,和其他汇合计划——都供应了对一切操纵的撑持。可是,假如想新建一个汇合,同时不想为汇合接口中的一切办法都供应成心义的界说,同时令其仍与现有库共同,这类计划办法也的确供应了一个“后门”能够使用。
(2)若一个操纵未获撑持,那末UnsupportedOperationException(未撑持的操纵背例)极有大概在完成时代呈现,则不是在产物已托付给客户今后才会呈现。它究竟指出的是一个编程毛病——不准确地利用了一个类。这一点不克不及非常断定,经由过程也能够看出这类计划的“实验”特性——只要经由屡次实验,才干找出最幻想的事情体例。

在下面的例子中,Arrays.toList()发生了一个List(列表),该列表是由一个流动长度的数组后推出来的。因而独一可以撑持的就是那些不改动数组长度的操纵。在另外一方面,若哀求一个新接口表达分歧品种的举动(大概叫作“FixedSizeList”——流动长度列表),就有遭受更年夜的庞大水平的伤害。如许一来,今后试图利用库的时分,很快就会发明本人不知从那边动手。
对那些接纳Collection,List,Set大概Map作为参数的办法,它们的文档应该指出哪些可选的办法是必需完成的。举个例子来讲,排序请求完成set()和Iterator.set()办法,但不包含add()和remove()。
C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译)
作者: 小魔女    时间: 2015-1-21 10:45
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者: 不帅    时间: 2015-1-24 15:18
是一种将安全性(Security)列为第一优先考虑的语言
作者: 小妖女    时间: 2015-1-26 13:37
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 若相依    时间: 2015-1-31 16:24
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 蒙在股里    时间: 2015-1-31 23:43
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 第二个灵魂    时间: 2015-2-3 10:45
是一种使用者不需花费很多时间学习的语言
作者: 再见西城    时间: 2015-2-6 16:37
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者: 活着的死人    时间: 2015-2-9 06:40
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 老尸    时间: 2015-2-21 17:08
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者: 因胸联盟    时间: 2015-3-6 20:22
是一种为 Internet发展的计算机语言
作者: 柔情似水    时间: 2015-3-6 22:50
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者: 精灵巫婆    时间: 2015-3-10 12:53
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 山那边是海    时间: 2015-3-11 22:49
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 小女巫    时间: 2015-3-12 19:08
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 金色的骷髅    时间: 2015-3-19 23:51
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 分手快乐    时间: 2015-3-20 10:33
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 兰色精灵    时间: 2015-3-20 14:02
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 透明    时间: 2015-3-25 18:24
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 愤怒的大鸟    时间: 2015-3-27 10:12
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者: 飘飘悠悠    时间: 2015-3-30 10:49
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2