仓酷云

标题: 发布一篇java反射机制系列(三)例子剖析 [打印本页]

作者: 只想知道    时间: 2015-1-18 11:05
标题: 发布一篇java反射机制系列(三)例子剖析
到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。
上一篇中,经由过程例子我们晓得了怎样使用反射机制创立对象,取得类变量和挪用办法等。创立对象的语句是 Classcla=Class.forName(type);  Objectobj=cla.newInstance();这里newInstance()实践上是利用了该类的默许无参机关办法。假如我们要挪用别的的机关办法就要略微庞大一点。好比我们要创立一个StringBuffer对象,用new操纵符应当是StringBufferbr=newStringBuffer("example");用反射机制则要有以下步骤。
起首,取得StringBuffer类的形貌。
Classcla=Class.forName("java.lang.StringBuffer");
其次,要创立参数范例数组Class[]。
Class[]paraTypes=newClass[1];paraTypes[0]=String.class;
然后,经由过程cla和paraTypes取得Constructor对象。
Constructorconstructor=cla.getConstructor(paraTypes);
接着,创立传进的参数列表Object[]。
Object[]paraLists=newObject[1];paraLists[0]="color";
最初,失掉我们所要得对象。Objectobj=constructor.newInstance(paraLists);
假如我们paraTypes及paraLists设为null或长度为0,就能够用上述步骤挪用StringBuffer的无参机关办法。相似地,我们能够挪用对象中的有参办法。好比我们做以下操纵br.insert(4,u);用反射机制完成以下。
Class[]paratypes=newClass[]{int.class,char.class};
Methodmethod=cla.getMethod("insert",paratypes);
Object[]paralists=newObject[]{4,u};
method.invoke(obj,paralists);
反射机制赐与我们运转时才断定对象范例的便当,但是它也有明显的弱点。
1,代码愚笨冗杂。好比原本一句br.insert(4,u);能够办理的成绩如今要用到四句。
2,丧失了编译时范例反省的优点。这使得你要凑合更多的非常。
3,功能丧失。用反射机制运转的工夫更久。
<<EffectiveJava>>中给出的倡议是“一般使用不该在运转时候以映像体例会见对象,只是在很无限的情形下利用“。那末在甚么中央会用到反射机制呢。已有的较熟习使用是我们的IDE及一些框架。好比eclipse,编程时ctrl+space弹出的倡议就是用到反射机制。好比Spring读取设置文件后天生对应的对象。另有RPC体系也会用到。关于一样平常的使用软件,你能够在工场办法顶用到它。

有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。
作者: 小女巫    时间: 2015-1-19 19:05
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 老尸    时间: 2015-1-24 15:25
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 谁可相欹    时间: 2015-2-1 19:14
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 愤怒的大鸟    时间: 2015-2-7 13:38
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 活着的死人    时间: 2015-2-22 02:48
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 因胸联盟    时间: 2015-3-6 22:34
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 金色的骷髅    时间: 2015-3-13 22:08
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 透明    时间: 2015-3-20 20:23
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。




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