如何将地图转换为对象

时间:2009-11-26 05:36:11

标签: java

我有一个地图对象,地图中的数据就像

col1 -> data1, col2 -> data2, col3 -> data3 ...

是否可以将此Map转换为Java对象,如

class MapObj {

    String col1 = "data1";
    String col2 = "data2";
    String col3 = "data3";

}

5 个答案:

答案 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(条目,地图);

相关问题