[英]Using reflection in Java to create a new instance with the reference variable type set to the new instance class name?
[英]Create new instance of class with name from variable
所以我是编程新手,并且对类有一些问题。 我正在用下一块砖头的镜头。 库中有一个称为Node的类。 它需要X和Y。就像这样:
节点nodeNameOne = new Node(2,3);
我想做的事:
我有一个12 x 12的阵列。 对于数组中的每个位置,我想获取其X和Y并创建一个新节点。 问题是我想自动更改“ nodeNameOne”。
我的解决方案是创建一个intiger变量并将其递增,然后执行.to字符串并将其用作节点名称,方法是当我使用我的intiger变量名称时,它使用变量的名称而不是变量中的值。
我看过其他使用“ Class.newInstance”的帖子,但我无法使它正常工作。
任何帮助表示赞赏。 谢谢
更新:
我有一个12 x 12的阵列。 我将扫描数组,当我在数组的任何位置检测到0时,我都想使用数组位置的X和Y创建一个新的Node。
因为它是一个12 x 12的数组,所以有144个可能发生0的位置。 因此,制作一个新的is节点所需的代码是: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”。 -我希望这更清楚。
您想要的可能是一个数组。 二维数组是(i,j)-> Node [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]);
...
我想你想要一个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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.