【问题标题】:Using a HashMap and an ArrayList to store variable names and values. How to use for creating new objects?使用 HashMap 和 ArrayList 来存储变量名称和值。如何用于创建新对象?
【发布时间】:2015-05-11 19:15:12
【问题描述】:

我有一个 HashMap,它存储了对象变量的名称和对象需要使用的值。

对象创建将是:

Room [key] = new Room([value1]);

下面是HashMap:

public static Map<String, List<String>> makeRoom(String[] room){
    map = new HashMap<String, List<String>>();
        int roomNumber = Integer.parseInt(room[1]);

        List<String> valSetOne = new ArrayList<String>();
        valSetOne.add(room[2]);
        valSetOne.add(room[3]);
        valSetOne.add(room[4]);
        valSetOne.add(room[5]);

        map.put("r"+roomNumber, valSetOne);

        return map;
    }
}

如何使用它来生成新对象?例如,假设我有 3 个键:r1, r2, r3。如何生成代码:

Room r1 = new Room(1);
Room r2 = new Room(2);
Room r3 = new Room(3);

提前谢谢你。

【问题讨论】:

  • 你到底想做什么?您不能只使用地图并将String 键(如r1)与实例相关联吗?然后您可以简单地根据密钥查找实例。代码生成需要一些特定的情况,可能有更简单的解决方案来解决您的问题。
  • 看起来像代码生成对吧? Java 是一种编译时语言。有很多方法,但 Java 不适合它。
  • 听起来他想要一个键/值对,键是变量名,值是传递给对象构造函数的变量。
  • 我会制作一个 的字典/arraylist/hashmap 并添加到它
  • @hardtacos 你到底想做什么?

标签: java object hashmap


【解决方案1】:

要回答您的问题,您可以这样做:

Constructor roomConstructor = Room.class.getConstructor(Integer.class);
Room r1 = roomConstructor.newInstance(Integer.parseInt(map.get("r1")));
Room r2 = roomConstructor.newInstance(Integer.parseInt(map.get("r2")));
Room r3 = roomConstructor.newInstance(Integer.parseInt(map.get("r3")));

只要传入正确的参数,类对象就可以让你获取一个构造函数,然后从中创建一个新实例。

【讨论】:

  • 谢谢,我会试一试。如果成功了,我会接受它作为答案。
猜你喜欢
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 2013-12-13
  • 2014-05-28
  • 2017-06-05
  • 2013-11-01
相关资源
最近更新 更多