- 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 String
NASHORN_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 方法 描述 CompiledScript
compile(Reader reader)
编译脚本(源码为Reader
)供以后执行。CompiledScript
compile(String str)
编译脚本(源代码为String
)供以后执行。Bindings
createBindings()
返回未初始化的Bindings
。Object
eval(Reader reader, ScriptContext ctxt)
与eval(String, ScriptContext)
相同,其中脚本的来源从Reader
读取。Object
eval(String script, ScriptContext ctxt)
导致立即执行脚本,其脚本是作为第一个参数传递的String。ScriptEngineFactory
getFactory()
为这个ScriptEngine
所属的课程返回一个ScriptEngineFactory
。<T> T
getInterface(Class<T> clazz)
使用在解释器中编译的函数返回接口的实现。<T> T
getInterface(Object thiz, Class<T> clazz)
使用解释器中编译的脚本对象的成员函数返回接口的实现。Object
invokeFunction(String name, Object... args)
用于调用脚本中定义的顶级过程和函数。Object
invokeMethod(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_SCOPE
Bindings
ScriptContext
包含脚本变量与此脚本执行期间要使用的应用程序对象的绑定。 - 结果
- 从执行脚本返回的值。
- 异常
-
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
编译方法。
-
-