Как динамически создавать объекты класса с последовательным присвоением имен?

#java #object #dynamicobject

#java #объект #dynamicobject

Вопрос:

Предположим, я беру целочисленный пользовательский ввод — 17. Теперь я хочу создать 17 объектов класса «Узел». И они будут называться как node1, node2, …, node17.

Как этого добиться?

Комментарии:

1. Почему вы хотите это сделать?

2. У объектов нет имен, если у них нет атрибута name . Используйте цикл, создайте 17 экземпляров узла, каждый с нужным именем, и сохраните их в списке<Узел> или массиве Node[].

3. @JBNizet выглядит так, как будто он хочет создавать объекты со ссылочными именами, такими как node1, node2,…

4. Что вы имеете в виду под 17 объектами класса «Узел» ? 17 объектов класса Node или 17 классов, наследуемых от Node?

5. Используйте массив или список. Это именно то, для чего они предназначены: хранение ссылок от 0 до N.

Ответ №1:

Не надо. То, о чем вы просите, — плохая идея.

Что вы можете сделать, так это добавить несколько новых объектов в массив или коллекцию.
Если вас не волнуют имена ArrayList<Node> , я сделаю эту работу.
Если вам действительно нужны имена, то сделайте их ключами в a HashMap<String, Node> или аналогичными.

 public List<Node> makeThisManyNodes(int count) {
    List<Node> nodes = new ArrayList<Node>();
    for (int i=0; i<count; i  ) {
        nodes.add(new Node());
    }
    return nodes;
}
 

 static final String NODE_BASE_NAME = "node_%d";

public Map<String, Node> makeThisManyNodes(int count) {
    Map<String, Node> nodes = new HashMap<String, Node>();
    String key;
    for (int i=0; i<count; i  ) {
        key = String.format(NODE_BASE_NAME, i);
        nodes.put(key, new Node());
    }
    return nodes;
}