Java 编程的动态性,第3部分: 应用反射
2010-03-18 00:00:00 来源:WEB开发网g -- 增长率(每年)
n -- 产品名称
boolean 形参只需标记字符本身就可以设置一个值,而其他类型的形参还需要某种附加的实参信息。对于数值实参,我只将它的值紧跟在形参标记字符之后(这意味着数字不能用作标记字符),而对于带 String 类型值的形参,我将在命令行中使用跟在标记字符后面的实参作为实际的值。最后,如果还需要一些形参(例如业务计划生成器的输出文件的文件名),我假设这些形参的实参值跟在命令行中可选形参值的后面。有了上面给出的这些约定,业务计划生成器的命令行看上去就是这个样子:
java PlanGen -c -f2500 -g2.5 -n "iSue4U - Litigation at Internet Speed" plan.txt
如果把它放在一起,那么每个实参的意思就是:
-c -- 生成简要计划
-f2500 -- 第一年收入为 $2,500,000
-g2.5 -- 每年增长率为250%
-n "iSue4U . . ." -- 产品名称是 "iSue4U . . ."
plan.txt -- 需要的输出文件名
这时,我已经得到了参数处理库的基本功能的规范说明书。下一步就是为这个应用代码定义一个特定的接口,以使用这个库。
选择接口
您可以使用单个的调用来负责命令行参数的实际处理,但是这个应用程序首先需要以某种方式将它的特定的形参定义到库中。这些形参可以具有不同的几种类型(对于业务计划生成器的例子,形参的类型可以是 boolean , int、float 和 java.lang.String )。每种类型可能又有一些特殊的需求。例如,如果给出了标记字符的话,将 boolean 形参定义为 false 会比较好,而不是总将它定义为 true 。而且,为一个 int 值定义一个有效范围也很有用。
我处理这些不同需求的方法是,首先为所有形参定义使用一个基类,然后为每一种特定类型的形参细分类这个基类。这种方法使得应用程序可以以基本形参定义类的实例数组的形式将形参定义提供给这个库,而实际的定义则可以使用匹配每种形参类型的子类。对于业务计划生成器的例子,这可以采用清单2中所示的形式:
更多精彩
赞助商链接