javax.script

接口
异常
public interface Invocable

由 ScriptEngines 实现的可选接口,该 ScriptEngines 的方法允许在以前执行过的脚本中调用程序。

从以下版本开始:
1.6

方法摘要
<T> T
getInterface(Class<T> clasz)
          返回一个接口的实现,该接口使用解释器中编译的函数。
<T> T
getInterface(Object thiz, Class<T> clasz)
          返回一个接口的实现,该接口使用解释器中已编译脚本对象的成员函数。
 Object invokeFunction(String name, Object... args)
          用于调用脚本中定义的顶层程序和函数。
 Object invokeMethod(Object thiz, String name, Object... args)
          对以前的脚本执行中已经编译的脚本对象(以 ScriptEngine 的状态保持)调用某一方法。
 

方法详细信息

invokeMethod

Object invokeMethod(Object thiz,
                    String name,
                    Object... args)
                    throws ScriptException,
                           NoSuchMethodException
对以前的脚本执行中已经编译的脚本对象(以 ScriptEngine 的状态保持)调用某一方法。

参数:
name - 将被调用的程序的名称。
thiz - 如果该程序是脚本中已定义类的成员,并且 thiz 是以前的执行或调用所返回的类的实例,则通过该实例调用指定的方法。
args - 传递给程序的参数。将参数转换为脚本变量的规则是特定于实现的。
返回:
程序所返回的值。将脚本方法返回的脚本变量转换为 Java Object 的规则是特定于实现的。
抛出:
ScriptException - 如果在调用方法期间发生错误。
NoSuchMethodException - 如果不存在具有给定名称或匹配参数类型的方法。
NullPointerException - 如果方法名称为 null。
IllegalArgumentException - 如果指定的 thiz 为 null,或者指定的 Object 不表示一个脚本对象。

invokeFunction

Object invokeFunction(String name,
                      Object... args)
                      throws ScriptException,
                             NoSuchMethodException
用于调用脚本中定义的顶层程序和函数。

参数:
args - 传递给程序或函数的参数
返回:
程序或函数所返回的值
抛出:
ScriptException - 如果在调用方法期间发生错误。
NoSuchMethodException - 如果不存在具有给定名称或匹配参数类型的方法。
NullPointerException - 如果方法名称为 null。

getInterface

<T> T getInterface(Class<T> clasz)
返回一个接口的实现,该接口使用解释器中编译的函数。该接口的方法是使用 invokeFunction 方法实现的。

参数:
clasz - 要返回的接口的 Class 对象。
返回:
所请求接口的实例;如果所请求接口不可用,即 ScriptEngine 中不存在与所请求接口中的函数相匹配的已编译函数,则返回 null。
抛出:
IllegalArgumentException - 如果指定的 Class 对象为 null,或者该对象不是一个接口。

getInterface

<T> T getInterface(Object thiz,
                   Class<T> clasz)
返回一个接口的实现,该接口使用解释器中已编译脚本对象的成员函数。该接口的方法是使用 invokeMethod 方法实现的。

参数:
thiz - 其成员函数被用来实现接口方法的脚本对象。
clasz - 要返回的接口的 Class 对象。
返回:
所请求接口的实例;如果所请求接口不可用,即 ScriptEngine 中不存在与所请求接口中的方法相匹配的已编译方法,则返回 null。
抛出:
IllegalArgumentException - 如果指定的 Class 对象为 null 或不是一个接口,或者指定的 Object 为 null 或不表示一个脚本对象。