Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调用字符串形式的Java函数_Java_Spring Boot_Java 8 - Fatal编程技术网

如何调用字符串形式的Java函数

如何调用字符串形式的Java函数,java,spring-boot,java-8,Java,Spring Boot,Java 8,我用的是SpringBoot 我有一个字符串形式的函数,我想通过传递params来执行该函数(这样它的行为就像普通的java函数一样) 例: 我想调用这个函数,输入:方法名称(“abc”,10) 输出:abc10 我在JAVA中是否有任何方法或库 我尝试过的事情: 1) 使用java.beans.Statement 提前感谢!:) 我为什么需要这个? 我在JSON文件中使用这个函数,在这里我将动态地使用这个函数。 JSON obj: { "1":{ "function" : "public

我用的是SpringBoot

我有一个字符串形式的函数,我想通过传递params来执行该函数(这样它的行为就像普通的java函数一样)

例:

我想调用这个函数,输入:方法名称(“abc”,10)

输出:abc10

我在JAVA中是否有任何方法或库

我尝试过的事情:

1) 使用java.beans.Statement

提前感谢!:)

我为什么需要这个? 我在JSON文件中使用这个函数,在这里我将动态地使用这个函数。 JSON obj:

{
 "1":{
 "function" : "public void method_name(String name, int s) {\n" + 
                    "        System.out.println(name + s);\n" + 
                    "    } "
 },
 "2": {
   "function" : another function
 }
} 

希望您理解这一点。

这可以做到:查看
javax.tools.JavaCompiler

但是 您将在应用程序中创建一个巨大的安全漏洞。如果用户获得了对该json文件的访问权限,该怎么办?他们可以通过应用程序在服务器上运行任意代码

你真的需要问问自己,这是否是你真正想做的事情。也许有一个更简单的方法来实现你想要的?例如,查看策略设计模式。也许它已经可以做你想要的大部分事情了

而且,
JavaCompiler
很难工作。除了
JavaCompiler
本身之外,您还需要学习反射和类加载器以使其工作。所以这是另一个不走这条路的原因


不要这样做。

你能解释一下你为什么要这样做吗?你在解决什么问题?如果你需要一个java代码解释器,你可以看看beanshell:你有没有找到更好的解释器?告诉我们为什么,你想做什么
{
 "1":{
 "function" : "public void method_name(String name, int s) {\n" + 
                    "        System.out.println(name + s);\n" + 
                    "    } "
 },
 "2": {
   "function" : another function
 }
}