- java.lang.Object
-
- javax.script.AbstractScriptEngine
-
- jdk.nashorn.api.scripting.NashornScriptEngine
-
- All Implemented Interfaces:
-
Compilable,Invocable,ScriptEngine
public final class NashornScriptEngine extends AbstractScriptEngine implements Compilable, Invocable
适用于Nashorn的JSR-223兼容脚本引擎。 实例不是直接创建的,而是通过NashornScriptEngineFactory.getScriptEngine()返回。 请注意,该引擎实现了Compilable和Invocable接口,可以有效地预编译和重复执行脚本。- 从以下版本开始:
- 1.8u40
- 另请参见:
-
NashornScriptEngineFactory
-
-
Field Summary
Fields Modifier and Type Field 描述 static StringNASHORN_GLOBAL用于将Nashorn全局对象镜像与任意Bindings实例相关联的关键字。-
Fields inherited from class javax.script.AbstractScriptEngine
context
-
Fields inherited from interface javax.script.ScriptEngine
ARGV, ENGINE, ENGINE_VERSION, FILENAME, LANGUAGE, LANGUAGE_VERSION, NAME
-
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 CompiledScriptcompile(Reader reader)编译脚本(源码为Reader)供以后执行。CompiledScriptcompile(String str)编译脚本(源代码为String)供以后执行。BindingscreateBindings()返回未初始化的Bindings。Objecteval(Reader reader, ScriptContext ctxt)与eval(String, ScriptContext)相同,其中脚本的来源从Reader读取。Objecteval(String script, ScriptContext ctxt)导致立即执行脚本,其脚本是作为第一个参数传递的String。ScriptEngineFactorygetFactory()为这个ScriptEngine所属的课程返回一个ScriptEngineFactory。<T> TgetInterface(Class<T> clazz)使用在解释器中编译的函数返回接口的实现。<T> TgetInterface(Object thiz, Class<T> clazz)使用解释器中编译的脚本对象的成员函数返回接口的实现。ObjectinvokeFunction(String name, Object... args)用于调用脚本中定义的顶级过程和函数。ObjectinvokeMethod(Object thiz, String name, Object... args)调用在前一个脚本执行期间编译的脚本对象上的方法,该方法保留在ScriptEngine的状态。-
Methods inherited from class javax.script.AbstractScriptEngine
eval, eval, eval, eval, get, getBindings, getContext, getScriptContext, put, setBindings, setContext
-
-
-
-
字段详细信息
-
NASHORN_GLOBAL
public static final String NASHORN_GLOBAL
用于将Nashorn全局对象镜像与任意Bindings实例相关联的关键字。- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
eval
public Object eval(Reader reader, ScriptContext ctxt) throws ScriptException
描述从接口ScriptEngine复制与eval(String, ScriptContext)相同,其中脚本的来源从Reader读取。- Specified by:
-
eval在接口ScriptEngine - 参数
-
reader- 由脚本引擎执行的脚本的源代码。 -
ctxt-ScriptContext传递给脚本引擎。 - 结果
- 从执行脚本返回的值。
- 异常
-
ScriptException- 脚本中是否发生错误。 ScriptEngines应该创建并抛出ScriptException包装器,用于基础脚本实现抛出的检查异常。
-
eval
public Object eval(String script, ScriptContext ctxt) throws ScriptException
说明从接口ScriptEngine复制导致立即执行脚本,其脚本是作为第一个参数传递的String。 脚本可能在执行之前被重新编译或重新编译。 在执行过程中,包括变量值和编译过程在内的引擎中留下的状态可能在以前的执行过程中可见。- Specified by:
-
eval在接口ScriptEngine - 参数
-
script- 由脚本引擎执行的脚本。 -
ctxt- AScriptContext在不同范围内公开属性集。 本ScriptContext.ENGINE_SCOPE中定义了示波器ScriptContext.GLOBAL_SCOPE和ScriptContext.ENGINE_SCOPE的含义。
ENGINE_SCOPEBindingsScriptContext包含脚本变量与此脚本执行期间要使用的应用程序对象的绑定。 - 结果
- 从执行脚本返回的值。
- 异常
-
ScriptException- 脚本中是否发生错误。 ScriptEngines应该创建并抛出ScriptException包装器,用于基础脚本实现抛出的检查的异常。
-
getFactory
public ScriptEngineFactory getFactory()
描述从接口ScriptEngine复制为这个ScriptEngine所属的类返回一个ScriptEngineFactory。- Specified by:
-
getFactory在接口ScriptEngine - 结果
-
ScriptEngineFactory
-
createBindings
public Bindings createBindings()
说明从接口ScriptEngine复制返回未初始化的Bindings。- Specified by:
-
createBindings在接口ScriptEngine - 结果
-
A
Bindings可以用来替换这个ScriptEngine的状态。
-
compile
public CompiledScript compile(Reader reader) throws ScriptException
描述从接口Compilable复制编译脚本(源码为Reader)供以后执行。 除了通过源的方式以外,功能与compile(String)相同。- Specified by:
-
compile在接口Compilable - 参数
-
reader- 从中获取脚本源的读者。 - 结果
-
的子类的实例
CompiledScript稍后将使用的其一个被执行eval的方法CompiledScript。 - 异常
-
ScriptException- 如果编译失败。
-
compile
public CompiledScript compile(String str) throws ScriptException
描述从接口Compilable复制编译脚本(源代码为String)供以后执行。- Specified by:
-
compile在接口Compilable - 参数
-
str- 脚本的来源,表示为String。 - 结果
-
的子类的实例
CompiledScript稍后将使用的一个被执行eval的方法CompiledScript。 - 异常
-
ScriptException- 如果编译失败。
-
invokeFunction
public Object invokeFunction(String name, Object... args) throws ScriptException, NoSuchMethodException
说明从界面Invocable复制用于调用脚本中定义的顶级过程和函数。- Specified by:
-
invokeFunction在接口Invocable - 参数
-
name- 要调用的过程或函数 -
args- 传递给程序或函数的参数 - 结果
- 程序或函数返回的值
- 异常
-
ScriptException- 如果在调用方法期间发生错误。 -
NoSuchMethodException- 如果NoSuchMethodException具有给定名称或匹配参数类型的方法。
-
invokeMethod
public Object invokeMethod(Object thiz, String name, Object... args) throws ScriptException, NoSuchMethodException
描述从接口Invocable复制调用在前一个脚本执行期间编译的脚本对象上的方法,该方法保留在ScriptEngine的状态。- Specified by:
-
invokeMethod接口Invocable - 参数
-
thiz- 如果过程是在脚本中定义的类的成员,而thiz是先前执行或调用返回的该类的实例,则通过该实例调用命名方法。 -
name- 要调用的过程的名称。 -
args- 传递给程序的参数。 将参数转换为脚本变量的规则是实现特定的。 - 结果
- 程序返回的值。 将由脚本方法返回的脚本变量转换为Java对象的规则是实现特定的。
- 异常
-
ScriptException- 如果在调用方法期间发生错误。 -
NoSuchMethodException- 如果NoSuchMethodException具有给定名称或匹配参数类型的方法。
-
getInterface
public <T> T getInterface(Class<T> clazz)
描述从接口Invocable复制使用在解释器中编译的函数返回接口的实现。 接口的方法可以使用invokeFunction方法来实现。- Specified by:
-
getInterface在接口Invocable - 参数类型
-
T- 要返回的接口的类型 - 参数
-
clazz- 要返回的接口的Class对象。 - 结果
-
所请求的接口的实例 - 如果请求的接口不可用,则为null,即,如果找不到匹配的请求接口中的
ScriptEngine中的ScriptEngine编译函数。
-
getInterface
public <T> T getInterface(Object thiz, Class<T> clazz)
描述从接口Invocable复制使用解释器中编译的脚本对象的成员函数返回接口的实现。 可以使用invokeMethod方法来实现接口的方法。- Specified by:
-
getInterface在接口Invocable - 参数类型
-
T- 要返回的接口的类型 - 参数
-
thiz- 其成员函数用于实现接口方法的脚本对象。 -
clazz- 要返回的接口的Class对象。 - 结果
-
所请求的接口的实例 - 如果请求的接口不可用,则为null,即,如果找不到匹配的请求接口中的
ScriptEngine编译方法。
-
-