【发布时间】:2015-11-24 05:32:43
【问题描述】:
我有一个很长的 switch 语句,我正在努力提高效率。 它解析 xml 提要并使用 xml 值填充 Java 对象。 可能有 30 个字段,所以编写 switch case 有点乏味 每个字段。
switch (currentTagName) {
case "longitude" :
observation.setLongitude(Double.parseDouble(parser.getText()));
break;
case "elevation" :
observation.setElevation(Integer.parseInt(parser.getText()));
break;
case "observation_time" :
observation.setObservation_time(parser.getText());
break;
您可以看到,每种情况的处理方式的唯一区别在于我正在处理的数据类型。
我正在尝试找出类似的语法(伪代码):
//get the data type of this variable, somehow or other
String inputType = Observation.getMethodInputType("set" + currentTagName);
//switch on that data type
switch(inputType) {
case "Integer":
observation.set{currentTagName}(Integer.parseInt(parser.getText()));
break;
case "Double":
observation.set{currentTagName}(Double.parseDouble(parser.getText()));
break;
case "String":
observation.set{currentTagName}(parser.getText());
break;
}
只是我的 Java 语法很生疏,我不确定这样做的正确方法是什么(或者你是否可以), 特别是对于 set{currentTagName} 部分和 getMethodInputType() (这是一回事吗?)。
这样做的正确方法是什么?
【问题讨论】:
标签: java