一个新的java组件,它假定将预定义变量列表发送给外部方。然后,用户可以通过xml属性文件
定义要发送的变量(一组固定的变量)问题是:预定义变量在一个类中,并且与它一起有业务逻辑,我无法更改或利用(外部api的一部分)。例如如下:
public class DataColumn implement java.io.Serializable{
public static final String _actionID = "ActionID";
public static final String _actionName = "ActionName";
public static final String _actionDesc = "ActionDescription";
public static final DataColumn ActionDesc = new DataColumn (_actionDesc);
public static final DataColumn ActionID = new DataColumn (_actionID);
public static final DataColumn ActionName = new DataColumn (_actionName);
....and about 100 other variale more
protected WebMediaReportColumn(java.lang.String value) {
_value_ = value;
_table_.put(_value_,this);
}
}
用户将在xml文件中定义如下:
<interface>
<fields isRequired="true">
<field>ActionID</field>
<field>ActionName</field>
<field>ActionDescription</field>
</fields>
</interface>
为了设置要发送的变量,代码如下所示:
interface.setColumns(new DataColumn[] {
DataColumn.ActionID, DataColumn.ActionName, DataColumn.ActionDesc
}
);
问题是:如何最好地编写一个程序,该程序可以基于用户在属性文件中定义的内容,并相应地创建Datacolumn []数组? 没有使用If else块太长且难以维护。
答案 0 :(得分:0)
将所有这些语句写在属性文件中。
actionID = ActionID
actionName = ActionName
actionDesc = ActionDescription
/*... and so on */
在您的代码中创建一个Properties对象并将其加载到其中。创建一个String数组并填充此属性对象中的值。
Properties p = new Properties();
/*...load the file...*/
String []columnData = new String[p.keySet().size()];
int i=0;
for(Object str : p.keySet()) {
columnData[i++]=(String)p.getProperty((String)str);
}
/*now call the method and pass the array*/
interface.setColumns(columnData);