首页 / JAVA / 如何用变量定义java对象名?
如何用变量定义java对象名?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何用变量定义java对象名?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2983字,纯文字阅读大概需要5分钟。
内容图文
我需要使用通过循环容易获得的命名模式来创建大量对象.有没有办法从变量读取对象名称,像这样?
String Var = "ObjectName";
ClassName Var = new ClassName();
我不需要为对象分配变量名,只是为了在赋值时从中获取名称.
解决方法:
您选择的单词表明您并不完全理解变量和对象的工作方式,您需要修复它以获得Java的任何位置.
如果我写:
Item myItem = new Item();
我创建了一个新对象,并定义了一个指向该对象的变量.
该对象没有名称(它有一个ID,这是在运行时分配的数字;大多数程序员可以忽略它).
该变量的名称为myItem.变量指向对象.稍后,它可能指向另一个对象.变量可能超出范围并且不再存在,而对象继续存在.
你可能会说,“这并不重要.如果我说’对象的名字’,我的意思是’指向对象的变量名’.”
但这很重要,因为许多对象将由多个变量指向:
Item myItem = new Item();
Item yourItem = myItem;
// both variables point to the same object. Neither variable is "more" the
// owner of the object than the other.
……并且许多对象不会被变量直接指向.
myList.append(new Item());
// you can't get at this new object using a direct variable.
在Java(和大多数主流语言)中,您无法在运行时创建变量名称.唯一存在的变量名称是字面上在源代码中的变量名称.
所以没有什么能像这样工作:
int number = 1;
Cell cell$number = new Cell(); // can't be done!
Cell currentCell = cell1;
您也无法根据运行时数据按名称访问变量.所以没有什么能像这样工作:
Cell cell1 = ...;
int number = 1;
Cell currentCell = cell$number; // can't be done!
这是一件好事,因为它可以让编译器验证有关代码的某些内容.
在某些语言中,您可以使用eval()实现类似的功能 – 但是您应该从中跑出一英里!
这是一个提示,如果您正在编写如下代码:
Cell cell0 = new Cell(...);
Cell cell1 = new Cell(...);
...
Cell cell99 = new Cell(...);
……然后你做错了什么.它可能会起作用,但它会严重缩放.没有办法将它放入循环中. (别担心 – 我们大多数人在开始编程时遇到了这个问题).
如果,你使用了一个数组:
Cell[] cells = new Cell[];
cells[0] = new Cell(...);
cells[1] = new Cell(...);
...
cells[99] = new Cell(...);
然后你可以使用循环代替:
for(int i = 0; i<100; i++) {
cells[i] = new Cell(...);
}
数组是最简单的“集合”对象.还有集合,列表,地图和一系列更高级的集合,以满足大多数需求.
您似乎希望使用字符串作为键来存储和访问对象.这样做的方法是使用Map.
Map<String,Cell> myMap = new TreeMap<String,Cell>();
myMap.put("AA", new Cell(...));
myMap.put("AB", new Cell(...));
...
Cell currentCell = myMap.get("AA");
地图是一个界面. TreeMap只是一个提供Map接口实现的类.阅读标准JRE提供的各种Map实现.
密钥不必是String.任何实现equals()的东西都可以用作键.
使用这个:
for(char c = 'A'; c <= 'L'; c++) {
for(char d = 'A'; d<= 'L'; d++) {
myMap.put("" + c + d, new Cell(...));
}
}
但是,由于您已经说过想要一个网格,因此最好使用二维数组,并在需要时将数字坐标转换为字母网格引用.谷歌的“2D阵列Java”,你会发现很多例子.
Cell[][] cells = new Cell[12][12];
for(int x=0; x<12; x++) {
for(int y=0; y<12; y++) {
Cell cell = new Cell();
cell.setName( "" + ('A' + x) + ('A' + y)); // perhaps
cells[x][y] = cell;
}
}
除了标准的JRE之外,还有很多其他的Map实现.例如,Spring提供DefaultRedisMap,其中对象存储在Redis数据库中.
更一般地说 – 你在这里问了一个非常基本的问题.您应该阅读任何体面的Java书籍中关于Collections API的章节.
内容总结
以上是互联网集市为您收集整理的如何用变量定义java对象名?全部内容,希望文章能够帮你解决如何用变量定义java对象名?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。