仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 450|回复: 8
打印 上一主题 下一主题

[学习教程] 发布一篇java反射机制系列(三)例子剖析

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:05:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 22:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表