我的数据类型包含100个属性和100个getter方法(getproperty1 .... getproperty100)。
我从用户那里得到了一个输入,如
Property1
Property2
.
.
Property100
如何快速调用此逻辑中的方法
For property1 I need to invoke getproperty1
For propertyI I need to invoke getpropertyI
如何以有效的方式使用if else
或switch
声明或反射来完成此操作。
由于
答案 0 :(得分:2)
你最好的选择可能是某种类型的数组或散列图,并通过索引/键访问它:
public class DataType {
private Map<String, DataProperty> data = new HashMap<String, DataProperty>();
public DataProperty getProperty(String key) {
return data.get(key);
}
public void setProperty(String key, DataProperty value) {
data.put(key, value);
}
}
虽然,100个属性似乎很多......看看你是否应该分解它或者重新组织它。
答案 1 :(得分:1)
1。如果您需要调用多种方法,我建议使用Strategy
设计模式。用最简单的形式你可以尝试
public interface Command<T> {
public T getProperty();
}
然后根据需要创建尽可能多的实现。
2。如果您只对返回类型感兴趣,而不是真正的调用,那么Map<String, T>
将是更好的选择。
3。如果您希望传递计划中的信息,可以使用enum
方法
public enum Command {
Property1("some value"),
Property2("some other value");
private String str;
public Command(String str) {
this.str = str;
}
public String getVal() {
return str;
}
}
可以像
一样使用Command cmd = ...
String value = cmd.getVal();
答案 2 :(得分:1)
您可以将该类重构为Map。如果你有大量像这样的对象,它看起来更像是一个地图的线而不是一个对象。
Map<String, Object>