如题,方法的一个参数用来接收一段java代码,在该方法内编译执行这段代码,能否实现?
比如
public String subtitue(String data, String javaCode) {
//该方法返回java代码javaCode处理参数data的返回值
}
当然是可以实现,可以调用编译器的接口,现在也有好几个编译器的实现jar包,
比如JDT,javac等,
首先把传来的java代码写到文本里 然后调用javac编译成class 然后调用这个代码里面的东西就行了 如果是web的得需要你重起服务器 或者把服务器搞成热部署的。
关于这个命题个人觉得不可行。
如果可行,按如下方式实现:
1、使用io将javacode写成一个.java文件。
2、使用runtime类的exec()方法调用系统命令编译。
3、使用java反射机制调用相应方法,传的参数是data。(可惜在这里不知道参数传给谁)
这个命题最不稳定的因素就是 javacode。因为无法确定调用javacode里的哪个方法,最要命的是无法保证正常编译。
不知道你具体想干什么,如果真的是楼主的需求的话,请查阅BeanShell,你可以用BeanShell执行java代码的。