如何在java中动态创建新变量

时间:2011-04-04 10:43:17

标签: java

是否可以动态地在java中创建新变量。

class A {
methodA(String variableName) {

      }
}

因此,如果两次调用新方法,那么应该在这个类中新添加2个新变量吗?

有可能吗?

6 个答案:

答案 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,成功。