我上课了一些变数。
如何创建map,其中key是变量的名称,value是该变量的值?
所以我想创建:
来自自定义对象的 Map<String, String>
:
我创造了这样的东西:
protected Map<String, String> getObjectParams(Object object) throws Exception {
Map<String, String> result = new HashMap<>();
for (String field : (Iterable<String>) BeanUtils.describe(object).keySet()) {
Object value = PropertyUtils.getProperty(object, field);
if ((value != null) && (!"CLASS".equalsIgnoreCase(field)) {
result.put(field, value.toString());
}
}
return result;
}
但这仅在类包含基本对象及其包装的等效项时才有效。但是当有另一个生成toString的自定义对象时,那将是我不想要的值。那么我应该如何重写这个例子呢?
更新:
public Class MyCustomClass1 {
MyCustomClass2 customClass2;
}
public Class MyCustomClass2 {
String a;
String b;
}
然后map应包含值MyCustomClass2A和MyCustomClass2B及其值或类似的东西
答案 0 :(得分:0)
您必须在自定义类中重载toString()方法才能获得所需的值。类似的东西:
public Class MyCustomClass1 {
MyCustomClass2 customClass2;
public String toString(){
return customClass2.toString();
}
}
public Class MyCustomClass2 {
String a;
String b;
public String toString(){
return a + " " + b;
}
}
这只是一个例子,根据需要更改为String()。
答案 1 :(得分:0)
将返回类型更新为Map或Map 并使用递归来填充子对象。