繁体   English   中英

将字符串转换为java代码

[英]Coverting string to java code

我有一个在运行时构建的字符串

str = "a+dataValue(i)";

其中'a'是变量, 'dataValue(i)'是带参数i的函数

现在我有一个函数,我想使用字符串str作为代码的一部分。 例如

 public void func()
     {
        for(int i=0;i<n;i++)
          Sytem.out.println(converted_to_java_source(str)); //(i.e.) a+dataValue(i);  it should be converted at runtime not compile time 

     } 

我需要输出如下:

 when a = 2; dataValue(i) returns i; n = 5
 On call to func it should print
 2 3 4 5 6 7

谢谢。

您正在寻找动态类型语言(如JavaScript,Perl,Python等)中的eval函数/方法的Java等价物。 不幸的是没有一个。

在Java中有很多种方法可以做这种事情,但它们都很昂贵,而且还有其他各种各样的方面。

我的建议是寻找另一种(更简单/更便宜)的方式来满足您的要求。


如果你真的需要沿着eval路线走下去,那么这里有一些相关的Q / A,它们给出了合理的选择范围:

您可以查看字节代码工程库(BCEL)ASM 在任何一种情况下,事情都会变得混乱和过于复杂,所以我会建议斯蒂芬建议并尝试寻找另一种方式。

例如,你可以使用som if else语句以通常的方式调用你的函数,可能是这样的:

String functionName = "...";
if (functionName.toLowerCase().equals("someMethodName")
{
     someMethodName(someParams);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM