6.4.2 执行语句和表达式

JavaBeans组件也提供了动态执行语句和表达式的能力,主要是为了方便工具的使用者以类似脚本语言的方式来对组件进行操作,比如调用一个组件对象myBean的open方法的语句可以直接写成“myBean.open()”。语句和表达式的区别在于,语句不关心具体的执行结果,而表达式则会把执行结果记录下来。语句和表达式分别用java.beans.Statement和java.beans.Expression类来表示。Expression类继承自Statement类,并添加了获取和设置执行结果的方法。Statement类的execute方法用来执行语句。在Java 7中,Expression类增加了缓存执行结果的功能。当通过Expression类的getValue来获取执行结果时,如果execute方法之前没有被调用过,则会先调用execute方法,再返回结果,同时也会把执行结果记录下来。代码清单6-19给出了Expression类的使用示例。在创建Expression类的对象时,需要提供目标对象、方法名称和方法的调用参数。如果再次调用getValue方法,只会得到缓存中的执行结果,execute方法不会被再次调用。

代码清单6-19 Expression类的使用示例


public void executeExpression()throws Exception{

Expression expr=new Expression(new MyObject(),"greet",new Object[]{"alex"});

expr.execute();

Object result=expr.getValue();

}