Java - 如何使用动态名称访问var?

时间:2015-05-27 14:16:19

标签: java mysql eval

我访问包含多个字段的数据库:

  • rabbit2013
  • rabbit2014
  • rabbit2015

我正在尝试用Java创建一个程序来读取当前年份的变量(rabbit2015这里)。我的变量year中有当前年份。如何返回"rabbit"+year的值?

我尝试了这个但不起作用:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js"); 
Object result = null;
try {
    result = engine.eval("rabbit"+year);
}
catch (ScriptException e){
    e.printStackTrace();
}
System.out.println(result);

你有什么想法吗?

编辑:

Error : ReferenceError: "rabbit2015" is not defined in <eval> at line number 1

2 个答案:

答案 0 :(得分:0)

<%= link_to 'Make admin', user, {:controller => 'users', :action => 'make_admin'} %>

你有这种方式,Java正在评估“兔子”+年,然后将其传递给eval方法。

假设“year”是一个java变量,你还需要把它放在ScriptEngine绑定上......

result = engine.eval("\"rabbit\"+year");

然后在调用eval()...

时将绑定作为第二个参数传递
    Bindings bindings = engine.createBindings();
    bindings.put("year", year);

答案 1 :(得分:0)

我找到了我的问题的答案:
PS:当我和你谈论狂犬病时,它就是例子,这里是&#34; aRealiserEn&#34; +年份 我认为我不够好解释了我的问题(承诺我接下来会做得更好)。我感谢所有花时间阅读我并回答我的人(特别是Phil AndersonBiffen)。

solutions's code