如何调用在String中形成的Java函数

时间:2017-12-09 19:14:40

标签: java spring-boot java-8

我正在使用SpringBoot,

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

前:

String s = "public void method_name(String name, int s) {\n" + 
                "        System.out.println(name + s);\n" + 
                "    }";

我想调用此函数,输入: method_name(“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
 }
} 

希望你明白这一点。

1 个答案:

答案 0 :(得分:1)

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

无论其

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

你真的需要问问自己这是否是你真正想做的事情。也许有更简单的方法来实现你想要的东西?例如,查看策略设计模式。可能它可以完成你想要的大部分工作。

此外,JavaCompiler很难开始工作。除了JavaCompiler本身之外,您还需要了解反射和类加载器以使其工作。因此,这是不沿着这条道路前进的另一个原因。

不要这样做。