Java中操作Reflection API优化代码[Java编程]
本文“Java中操作Reflection API优化代码[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
择要
开辟者通过各种各样的办法来尝试避免单调冗余的编程.一些编程的法则比方担当、多态大概计划模子可以帮忙开辟者避免产生多余的代码.不过由于软件开辟方面存在着不肯定性,因此这些法则并不能消除代码保护和重新编写的需求.在很多时刻保护都是不可避免的,只有不能运作的软件才是从不需求保护的.不过,这篇文章介绍了你可以利用Java的Reflection API的功效来削减单调的代码编写,并可以利用活动的代码产生来降服reflection的限制.
数据配置(由外部的源头得到数据并且将它装载到一个Java对象中)可以操纵reflection的好处来成立一个可重用的筹划.问题是很简单的:将数据由一个文件装入到一个对象的字段中.目前假定用作数据的目标Java类每星期改变一次?有一个很直接的办理办法,不过你必须不断地保护载入的历程来反映任何的改变.在更复杂的环境下,一样的问题大概会令系统崩溃掉.关于一个处理过应用XML的大型系统的人来说,他就会碰到过这个问题.要编写一个载入的历程普通是非常单调乏味的,由于数据源大概目标Java类的改变,你需求常常更新和重新编写代码.在这里我要介绍另一个办理筹划,那就是利用映射,它普通利用更少的编码,并且可以在目标Java类发生改变后更新自己.
最初,我想介绍一个利用Reflection在运行期间配置数据的筹划.在开始的时刻,一个动态、基于映射的程序要比一个简单的办法更有吸引力多了.随后,我要揭暴露运行时Reflection的复杂性和冒险性.这篇文章将介绍由运行时的Reflection到活动的代码产生.
由简单到复杂
我的第一个筹划利用一个载入类将数据从一个文件载入到对象中.我的源代码含有对StringTokenizer对象下一节点办法的多次调用.在改正多次后,我的编码逻辑变得非常的直接、系统化.该类构造了专用的代码.在这个初始筹划中,我只需求利用3个基本的对象:
1、Strings
2、Objects
3、Arrays of objects
你可以影射类的对象来产生代码块,以下表所示:
被影射来产生代码块的对象
Field type | Code block |
String | fileIterator.nextString(); |
Object[] | Vector collector = new Vector(); while(fileIterator.hasMoreDataForArray()){ Object data = initializeObject(fileIterator)collector.add(data); } Object[] objArray = new Object[collector.size()]; collector.copyInto(objArray); |
Object | initializeObject(fileIterator); |
**************表一**************
我已经利用这个筹划作了几次编码,因此我在写代码之前我已经知道该筹划和代码的构造.难点在于该类是改变的.类的名字、成份和构造在任什么时刻候都大概发生改变,而任何的改变你都要重新编写代码.固然会发生这些改变,但是构造和下载的流程仍旧是一样的;在写代码前,我仍旧知道代码的构造和成份.我需求一个办法,来将头脑中的编码流程转换为一个可重用的、自动的情势.由于我是一个有效率的编程者,我很快就厌倦了编写几近一样的代码,这时我想到了映射.
数据配置普通需求一个源到目的数据的影射.影射可以是一个图解、DTD(document type definition,文档范例定义),文件格局等.在这个例子中,映射将一个对象的类定义注释为我们要映射的流程.映射可以在运行时复制代码的功效.在需求重写代码时,我将载入的历程用映射来替换,它所需求的时间和重写是一样的.
以上是“Java中操作Reflection API优化代码[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |