Java-Java如何用一个变量的值来命名一个新的变量
比如说这个:
String n_old = "hello";
ArrayList<String> n_old+"01"= new ArrayList<String>();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
比如说这个:
String n_old = "hello";
ArrayList<String> n_old+"01"= new ArrayList<String>();
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
不知道你的业务场景是什么。
不过猜测是否可以通过建立一个Map解决你的问题呢?例如:
String n_old = "hello";
Map<String, Object> container = new HashMap<String, Object>();
container.put(n_old+"01", new ArrayList<String>());
这样做貌似没有任何好处吧.变量名电脑是看不懂的,只是人的一种表意.虚拟机看来,变量名只是局部变量表中,变量槽的一个编号而已.无论谁包含谁,都只是一个数字而已
你的语句报错是因为使用了非法的标示符,在java中变量的命名只能使用字母数字和下划线,而且只能以字母和下划线开头,你的变量n_old+"01"显然是错误的,所以建议改成n_old_01。
在java中无法实现,因为变量名一定是一个已知的。
变量名是编译器使用的,是编译期的概念,只存在于编译器;而变量的值是运行期的概念,它存在于在编译期和运行期。你这种动态拼接到了运行期才会起作用,但是那个时候变量名都不存在,所以不能实现。而且Java里本身也不支持。
我表示强大的C++要实现这个毫无压力,而且很多库都有这种用法,就是根据一个已有的名字生成另一个相关的名字,比如Qt库中就大量使用,简单举例如下:
// 以下是 C++ 代码,不是Java
#define NAME(xxx) name##xxx // ## 表示拼接
int NAME(01) = 0;
cout << NAME(01) << endl; // 这两种表示是一样的
cout << name01 << endl;
可是Java里面没有强大的宏,用 @ITRusher 的方法还是不错的。
还有一个方法,如果名字中的规律是按整数顺序的,还可以用数组,比如
name[0]、name[1]...