Java 编程的动态性,第3部分: 应用反射
2010-03-18 00:00:00 来源:WEB开发网清单 2. 业务计划生成器的形参定义
private static final ParameterDef[] PARM_DEFS = {
new BoolDef('c', "m_isConcise"),
new IntDef('f', "m_initialRevenue", 10, 10000),
new FloatDef('g', "m_growthRate", 1.0, 100.0),
new StringDef('n', "m_productDescription")
}
有了得到允许的在一个数组中定义的形参,应用程序对参数处理代码的调用就可以像对一个静态方法的单个调用一样简单。为了允许除形参数组中定义的实参之外额外的实参(要么是必需的值,要么是可变长度的值),我将令这个调用返回被处理实参的实际数量。这样应用程序便可以检查额外的实参并适当地使用它们。最后的结果看上去如清单3所示:
清单 3. 使用库
public class PlanGen
{
private static final ParameterDef[] PARM_DEFS = {
...
};
public static void main(String[] args) {
// if no arguments are supplied, assume help is needed
if (args.length > 0) {
// process arguments directly to instance
PlanGen inst = new PlanGen();
int next = ArgumentProcessor.processArgs
(args, PARM_DEFS, inst);
// next unused argument is output file name
if (next >= args.length) {
System.err.println("Missing required output file name");
System.exit(1);
}
File outf = new File(args[next++]);
...
} else {
System.out.println("\nUsage: java PlanGen " +
"[-options] file\nOptions are:\n c concise plan\n" +
"f first year revenue (K$)\n g growth rate\n" +
"n product description");
}
}
}
更多精彩
赞助商链接