My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
CPELP2A  
Updated Jan 16, 2011 by jind...@gmail.com

命令行参数

命令行参数是一个数组模型,空格隔开,这种模型不便于程序识别。命令行解析程序就是将这种命令行参数转化为属性别,继而转化为命令对象(Action,JavaBean)的属性。

属性集结构

在转化为命令对象属性之前,我们先将命令行数组转化为参数数组的键值对模型。 比如

<CMD> -key1 value1 value2 -key2 value3 -key3 true -key4 1 2 -key4 3

将转化为如下模型:

{
  "key1":["value1","value2"],//同一个key下面可以有多个参数
  "key2":["value3"],
  "key3":["true"],
  "key4":["1","2","3"]//重复的key设置会自动连接参数数组(容错策略)
}

属性集映射为JavaBean属性

已上述实例为例: 如果我们有如下JavaBean

public void setKey2(String[] key2);
public void setKey3(boolean key3);
public void setKey4(int key4);

我们首先会遍历属性集合中的全部键:["key1","key2","key3","key4"]

  1. key1 对应的JavaBean setter 并没有定义,打印一个警告日志(未知属性),跳过
  2. key2 属性为字符串数组,通过setKey2方法将key2对应的字符串数组:["value3"]设置为JavaBean的key2属性。
  3. key3 属性为boolean型,将key3对应的值数组的最后一个元素"true" 转化为boolean,设置JavaBean属性
  4. key4 属性为int型,将key3对应的值数组的最后一个元素"3" 转化为int,设置JavaBean属性
  5. 这里有一个简单的容错策略,当我们需要的值只是一个,而参数设置了多个的时候,以最后一个为准。


Sign in to add a comment
Powered by Google Project Hosting