我有一个地图对象,地图中的数据就像
col1 -> data1, col2 -> data2, col3 -> data3 ...
是否可以将此Map转换为Java对象,如
class MapObj {
String col1 = "data1";
String col2 = "data2";
String col3 = "data3";
}
答案 0 :(得分:5)
虽然可以在运行时使用自定义类加载器创建类,但它相对没有意义。您将如何访问字段(反射和其他动态创建的类除外)?
答案 1 :(得分:1)
地图中是否有一组固定的命名条目?如果是这样,您可以创建MapObj类,并通过说myMapObj.col1 = myMap.get("col1");
等来分配三个字段。
但是暂时退出这个问题,你试图解决的更大的问题是什么? Map本身实际上已经是这个数据的一个非常方便的容器,所以也许您可以将Map用于您计划使用MapObj的相同目的?
答案 2 :(得分:1)
我认为将一堆Map值放入类中没有任何意义。 如果你想要静态访问,为什么不尝试相反的方法:
class MapAccess {
Map<String, String> backingMap = ...
public String getCol1() {
return backingMap.get("col1");
}
public String getCol2() {
return backingMap.get("col2");
}
public String getCol3() {
return backingMap.get("col3");
}
}
这样,你的应用程序不需要了解Map,也不会因为反射而迷失方向。
答案 3 :(得分:0)
我不知道会为你做任何预制的库,但使用java.lang.reflect
API应该是非常简单的。具体来说,Field#set *方法。但是,当然,您需要定义一个定义了字段(键)的类。
答案 4 :(得分:0)
BeanUtils.populate(条目,地图);