我正在使用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
}
}
希望你明白这一点。
答案 0 :(得分:1)
可以这样做:查看javax.tools.JavaCompiler
。
您将在应用中创建 巨大 安全漏洞。如果用户获得对该json文件的访问权限,该怎么办?他们可以通过您的应用程序在您的服务器上运行任意代码。
你真的需要问问自己这是否是你真正想做的事情。也许有更简单的方法来实现你想要的东西?例如,查看策略设计模式。可能它可以完成你想要的大部分工作。
此外,JavaCompiler
很难开始工作。除了JavaCompiler
本身之外,您还需要了解反射和类加载器以使其工作。因此,这是不沿着这条道路前进的另一个原因。
不要这样做。