我正在使用SpringBoot,
我有字符串形式的函数,我想通过传递参数来执行该函数(以便它的行为像普通的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 对象:
{
"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 - 如何调用以 String 形式形成的 Java 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47732183/