从Java对象中动态选择字段
我有一个Java对象,表示数据库的内容,如下所示:从Java对象中动态选择字段,java,database,select,enums,Java,Database,Select,Enums,我有一个Java对象,表示数据库的内容,如下所示: public Database { int varA; String varB; double varC; } 现在,我尝试选择和排序某些元素以进行进一步处理,但我想使其可配置,因此我创建了一个枚举,它表示对象的所有属性,如 public enum Contents { VarA, VarB, VarC; } 所以现在当我创建一个选择时 Contents[] select = { Conten
public Database {
int varA;
String varB;
double varC;
}
现在,我尝试选择和排序某些元素以进行进一步处理,但我想使其可配置,因此我创建了一个枚举,它表示对象的所有属性,如
public enum Contents {
VarA,
VarB,
VarC;
}
所以现在当我创建一个选择时
Contents[] select = { Contents.VarC, Contents.VarB };
我想从中生成一个字符串值列表,表示实际的数据库内容。现在我能想到的唯一实现是切换选择中的每个条目,具有非常难看的二次复杂性
public List<String> switchIT(Database db, Contents[] select) {
List<String> results = new ArrayList<String>();
for (Contents s : select) {
switch(s) {
case VarA:
results.add(db.varA.toString());
break;
//go on...
}
}
return results;
}
public List switchIT(数据库数据库,目录[]选择){
列表结果=新建ArrayList();
对于(内容:选择){
开关{
case VarA:
添加(db.varA.toString());
打破
//继续。。。
}
}
返回结果;
}
是否有更直接的方法在枚举和动态对象值之间映射?
或者更一般地说:从对象中动态选择值的最佳方法是什么?使用Java枚举的强大功能,Java枚举是成熟的类
public enum Contents {
VarA { public String get(Database d) { return d.getVarA(); } },
VarB { public String get(Database d) { return d.getVarB(); } },
VarC { public String get(Database d) { return d.getVarC(); } };
public String get(Database d) { return ""; }
}
然后,您的客户机代码变为
public List<String> switchIT(Database db, Contents[] select) {
List<String> results = new ArrayList<String>();
for (Contents s : select) results.add(s.get(db));
return results;
}
使用Java枚举的强大功能,它是成熟的类
public enum Contents {
VarA { public String get(Database d) { return d.getVarA(); } },
VarB { public String get(Database d) { return d.getVarB(); } },
VarC { public String get(Database d) { return d.getVarC(); } };
public String get(Database d) { return ""; }
}
然后,您的客户机代码变为
public List<String> switchIT(Database db, Contents[] select) {
List<String> results = new ArrayList<String>();
for (Contents s : select) results.add(s.get(db));
return results;
}
嗯,我知道有那么简单的方法^^嗯,我知道有那么简单的方法^^