使用变量名创建类的新实例

时间:2016-12-05 12:20:25

标签: java

所以我是编程新手并且遇到类问题。我正在使用镜头下一块砖。有一个名为Node的库。需要一个X和Y.就像这样:

Node nodeNameOne = new Node(2,3);

我想做什么:

我有一个12乘12阵列。对于数组中的每个位置,我想获得它的X和Y并创建一个新节点。问题是我想自动更改“nodeNameOne”。

我的解决方案是创建一个intiger变量并递增它,然后执行.to字符串并将其用作节点名称,当我使用我的intiger变量名时,它使用变量的名称而不是变量中的值。

我查看过使用“Class.newInstance”的其他帖子,但我无法让它工作。

感谢任何帮助。 谢谢

更新:

我有一个12乘12阵列。我将扫描数组,当我在数组的任何位置检测到0时,我想创建一个具有数组位置的X和Y的新节点。

因为它是一个12乘12的数组,所以有144个可能出现0的地方。 因此,创建一个新节点所需的代码是: Node nodename = new Node(x,y);

我想自动化实例名称:“nodeName”使用字符串变量,我将从中获取:

int nameOfNode= 0;
String temp = Integer.toString(nameOfNode);
Node temp = new Node(x,y);
nameOfNode++;

我得到的错误是它说已经使用了temp,但我知道。我希望它使用temp的值而不是名称“temp”。 - 我希望这更清楚。

2 个答案:

答案 0 :(得分:1)

你想要的可能是一个数组。二维阵列是来自(i,j) - >的映射。节点[i] [j]:

// Step 1 and 2: Create and add nodes
Node nodes[12][12];
for (int i = 0; i < 12; i++) {
    for (int j = 0; j < 12; j++) {
        nodes[i][j] = new Node(i, j);
        mesh.add(nodes[i][j], 0);
    }
}

然后,您可以使用数字(或整数变量)来引用节点:

// Step 3: Connect nodes:
mesh.connect(nodes[2][3], nodes[2][4]);
mesh.connect(nodes[2][3], nodes[3][3]);
mesh.connect(nodes[2][4], nodes[2][5]);
...

答案 1 :(得分:0)

我想你想要一个java.util.Map;

地图是将键映射到值的对象。地图不能包含重复的键;每个键最多可以映射一个值。您可以使用字符串“x,y”作为节点对象的键,然后您可以按照所需的方式按字符串检索节点对象。

你可以使用这样的地图:

final Map<String,Node> nodesMapedByName = new HashMap<>();
(...)
//asssuming x and y are integers, this will create an 
//new node for x and y and put it in the map using the string
//"x,y" as key
nodesMapedByName.put(x + "," + y, new Node(x,y);
(...)
//asssuming x and y are integers, this will retrieve the node
//mapped by the String "x,y"
final Node someNome =  nodesMapedByName.get(x + "," + y);