是否可以动态地在java中创建新变量。
class A {
methodA(String variableName) {
}
}
因此,如果两次调用新方法,那么应该在这个类中新添加2个新变量吗?
有可能吗?
答案 0 :(得分:10)
没有。您是否考虑过在课堂上存储Map<String, Object>
?地图中的关键字是“变量名称”,地图中的值将是逻辑变量名称。
如果你能提供更多有关你想要实现的目标的信息(从高层来看),这将有所帮助。
答案 1 :(得分:3)
不,这在Java中是不可能的。
类中的字段是在编译时确定的,并且在运行时不能更改(除非使用复杂的技术,例如类重新加载,例如JRebel)。但是,我会不建议这样做,除非您正在编写一些IDE。
答案 2 :(得分:1)
定义一个类及其成员,然后将其编译为字节码,因此无法在运行时轻松修改它们。也就是说,有许多库,例如cglib,它们提供运行时修改功能。此页面可以告诉您更多信息:http://java-source.net/open-source/bytecode-libraries
(这并不是说运行时修改是正确的做法!)
答案 3 :(得分:1)
在一个好的设计中,一个类必须代表一些东西,从语义上讲。您将其设计为表示系统中的对象。
如果你想在运行时为设计添加更多东西,那么,有些事情并不完全正确 - 当然,除非设计需要在运行时添加信息,并且有大量数据结构准备就绪为了这份工作!
例如,在Java中查看Map
。
答案 4 :(得分:0)
以下是我实施并帮助我轻松修复解决方案的方式,没有太多障碍。
//创建数组列表
List accountList = new ArrayList();
for(int k=0;k < counter;k++){
accountList.add(k, (String)flowCtx.getValueAt("transitId"+m));
}
迭代循环并使用索引将对象添加到arraylist中。
//在索引的帮助下在运行时检索对象
String a = accountList.get(i));
答案 5 :(得分:0)
使用HashMap可能是一种解决方案。例如,如果我们有以下类:
class Staff {
private HashMap<String, Object> mylist = new HashMap<String, Object>() ;
void setNewVar(String s, Object o) {
mylist .put(s, o);
}
HashMap<String, Object> getVar() {
return mylist;
}
}
我可以用它作为:
staff.setNewVar("NumVars",11);
staff.setNewVar("NumBatches",300);
...
然后:
staff.getVar()
您需要的任何地方。我用它将一些变量(数字可以改变)转换成JSON,成功。