Nul*_*ion 7 java variables dynamic
例如,假设我想"提取" String[] fruits = {"Pear", "Banana", "Apple"};成三个独立的变量,例如:
for (int i=0; i != fruits.length; ++i) {
// of course there's no eval in Java
eval("String fruit + i = " + fruits[i] + ";");
}
// ie: code that creates something equivalent to the following declarations:
String fruit0 = "Pear";
String fruit1 = "Banana";
String fruit2 = "Apple";
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,忽略了"你为什么要这么做?" 问你可能会被要求我.
之前已经多次提出过类似的问题,但是从未给出真正的答案,因为OP真正需要的是使用不同的方法.那没关系,但这有可能吗?
我看过反射,似乎没有任何方法可以让我甚至为实例添加额外的字段,更不用说动态创建本地.
Ste*_*n C 15
是否可以在Java中在运行时创建变量?
简单回答是不.
Java是一种静态语言,不支持将新变量声明注入现有的编译程序.有替代方案(按有用性降低/难度增加的顺序):
Map.或者提出一些不需要真正动态变量的其他设计.第一种方法是最好的.Java是一种静态语言,如果你不打它,效果最好.如果这对您来说是个问题,也许您使用的是错误的语言.
最后两个是困难/复杂的并且具有显着的性能成本.他们几乎肯定不会帮忙......
问题不在于为什么要这么做,而是“您打算怎么做?”。因此,假设在运行时变量名fruits2神奇地出现在您的方法堆栈中。怎么办?您必须在编译时知道它的名称才能利用它。反射不会帮助您访问局部变量。
无论如何,如果您描述了更详细的用例,我将很感兴趣。
| 归档时间: |
|
| 查看次数: |
14961 次 |
| 最近记录: |