#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;
}