Java编程的动态性,第3部分: 应用反射 - 编程入门网
的实例数组的形式 将形参定义提供给这个库,而实际的定义则可以使用匹配每种形参类型的子类。对于业务计 划生成器的例子,这可以采用清单2中所示的形式:
清单 2. 业务计划生成器的形参定义
Java编程的动态性,第3部分: 应用反射(3)时间:2011-04-09 IBM Dennis M. Sosnoski有了得到允许的在一个数组中定义的形参,应用程序对参数处理代码的调用就可以像对一 个静态方法的单个调用一样简单。为了允许除形参数组中定义的实参之外额外的实参(要么 是必需的值,要么是可变长度的值),我将令这个调用返回被处理实参的实际数量。这样应 用程序便可以检查额外的实参并适当地使用它们。最后的结果看上去如清单3所示: 清单 3. 使用库
最后剩下的部分就是处理错误报告(例如一个未知的形参标记字符或者一个超出范围的数 字值)。出于这个目的,我将定义 ArgumentErrorException 作为一个未经检查的异常,如 果出现了某个这一类的错误,就将抛出这个异常。如果这个异常没有被捕捉到,它将立即关 闭应用程序,并将一条错误消息和栈跟踪输出到控制台。一个替代的方法是,您也可以在代 码中直接捕捉这个异常,并且用其他方式处理异常(例如,可能会与使用信息一起输出真正 的错误消息)。 实现库 为了让这个库像计划的那样使用反射,它需要查找由形参定义数组指定的一些字段,然后 将适当的值存到这些来自相应的命令行参数的字段中。这项任务可以通过只查找实际的命令 行参数所需的字段信息来处理,但是我反而选择将查找和使用分开。我将预先找到所有的字 段,然后只使用在参数处理期间已经被找到的信息。 预先找到所有的字段是一种防错性编程的步骤,这样做可以消除使用反射时带来的一个潜 在的问题。如果我只是查找需要的字段,那么就很容易破坏一个形参定义(例如,输错相应 的字段名),而且还不能认识到有错误发生。这里不会有编译时错误,因为字段名是作为 String 传递的, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |