快速业务通道

Java编程的动态性,第3部分: 应用反射 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
的运行的变量称作 形参(parameters),以便 与命令行提供的 实参(arguments)――即形参的值区分开来。通过为这些形参使用字段, 将使得在需要形参的应用程序代码中的任何地方都可以方便地调用它们。而且,如果使用字 段的话,在定义形参字段时为任意形参设置默认值也很方便,如清单1所示:

清单 1.业务计划生成器(部分清单)

public class PlanGen {    private boolean m_isConcise;     // rarely used, default  false    private int m_initialRevenue = 1000; // thousands, default is  1M    private float m_growthRate = 1.5;   // default is 50% growth  rate    private String m_productDescription = // McD look out, here I  come      "eFood - (Really) Fast Food Online";    ...    private int revenueForYear(int year) {      return (int)(m_initialRevenue * Math.pow(m_growthRate, year- 1));    }    ...

Java编程的动态性,第3部分: 应用反射(2)

时间:2011-04-09 IBM Dennis M. Sosnoski

反射将使得应用程序可以直接访问这些私有字段,允许参数处理库在应用程序代码中没有 任何特殊钩子的情况下设置参数的值。但是我 的确需要某种方法能让这个库将这些字段与特 定的命令行参数相关起来。在我能够定义一个参数和一个字段之间的这种关联如何与库进行 通信之前,我需要决定我希望如何格式化这些命令行参数。

对于本文,我将定义一种命令行格式,这是UNIX惯例的一种简化版本。形参的实参值可以 以任何顺序提供,在最前面使用一个连字符以指示一个实参给出了一个或者多个单字符的形 参标记(与实际的形参的值相对)。对于这个业务计划生成器,我将采用以下形参标记字符 :

c -- 简要计划

f -- 第一年收入(千美元)

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 值定义一个有效范围也很有用。

我处理这些不同需求的方法是,首先为所有形参定义使用一个基类,然后为每一种特定类 型的形参细分类这个基类。这种方法使得应用程序可以以基本形参定义类

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号