|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
到时我们不用学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成为了大型项目的首选。 |
|