最近遇到动态编译时怎样处理动态返回值的问题。
如上所示是一个动态编译的代码片段,在动态执行时如何解决return返回的语句,也就是sum和sub的返回值?
1、动态编译时有多种方法获取动态执行代码的类实例,此处使用的是java中的反射机制。代码如下:
其中clsName就是你动态编译代码中的类名,此处clsName=Hello。此时就会生成我们需要类的对象实例,也就是此时生成了Hello的实例,因此可以利用此实例对类Hello进行操作。
2、如何处理Hello类的函数返回值呢?
此处要用到java.lang.reflect包(反射机制)中的Method函数。
创建Method对象并取得动态编译代码Hello类的相应函数,以及传入参数(如果类中的函数需要)。然后调用Method中的invoke函数返回需要的值。
到此就实现了在动态编译时处理返回值得处理。如何实现动态编译,网上有很多文章,大家可以去搜索了.