- 所有已知的实现类:
-
AbstractScriptEngine
public interface ScriptEngine
ScriptEngine
是基本接口,其方法在规范的每个实现中必须完全可用。
这些方法提供基本的脚本功能。编写为这个简单接口的应用程序预计在每个实现中都能以最小的修改工作。它包括执行脚本的方法,以及设置和获取值的方法。
这些值是两种类型的键/值对。第一种类型的对包括那些键在本规范中保留和定义的或由各个实现定义的。具有保留键的对中的值具有指定的含义。
另一种类型的对包括创建Java语言绑定的对,这些值通常在脚本中由相应的键或其装饰形式表示。
- 自1.6版本起:
- 1.6
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
传递脚本的位置参数数组的命名值的保留键。static final String
是ScriptEngine
实现的名称的命名值的保留键。static final String
标识ScriptEngine
实现版本的命名值的保留键。static final String
正在执行的文件的名称的命名值的保留键。static final String
支持的实现的脚本语言的全名的命名值的保留键。static final String
标识实现支持的脚本语言版本的命名值的保留键。static final String
标识脚本语言的简称的命名值的保留键。 -
Method Summary
Modifier and TypeMethodDescription返回一个未初始化的Bindings
。与eval(String)
相同,只是脚本的源作为Reader
提供。与eval(String, Bindings)
相同,只是脚本的源作为Reader
提供。eval
(Reader reader, ScriptContext context) 与eval(String, ScriptContext)
相同,其中脚本的源从Reader
读取。执行指定的脚本。使用Bindings
参数作为ScriptEngine
在脚本执行期间的ENGINE_SCOPE
Bindings
执行脚本。eval
(String script, ScriptContext context) 导致立即执行源为作为第一个参数传递的字符串的脚本。检索在此引擎状态中设置的值。getBindings
(int scope) 返回命名值的作用域。返回ScriptEngine
的默认ScriptContext
,当没有指定ScriptContext
时,其Bindings
、Reader和Writer用于脚本执行。为此ScriptEngine
所属的类返回一个ScriptEngineFactory
。void
在ScriptEngine的状态中设置一个键/值对,该键/值对可能创建一个Java语言绑定,用于在脚本执行中使用,或以其他方式使用,具体取决于键是否保留。void
setBindings
(Bindings bindings, int scope) 设置要由脚本使用的命名值的作用域。void
setContext
(ScriptContext context) 设置ScriptEngine
的默认ScriptContext
,当没有指定ScriptContext
时,其Bindings
、Reader和Writer用于脚本执行。
-
Field Details
-
ARGV
传递脚本的位置参数数组的命名值的保留键。- 参见:
-
FILENAME
正在执行的文件的名称的命名值的保留键。- 参见:
-
ENGINE
是ScriptEngine
实现的名称的命名值的保留键。- 参见:
-
ENGINE_VERSION
标识ScriptEngine
实现版本的命名值的保留键。- 参见:
-
NAME
标识脚本语言的简称的命名值的保留键。该名称由ScriptEngineManager
用于在getEngineByName
方法中定位具有给定名称的ScriptEngine
。- 参见:
-
LANGUAGE
支持的实现的脚本语言的全名的命名值的保留键。- 参见:
-
LANGUAGE_VERSION
标识实现支持的脚本语言版本的命名值的保留键。- 参见:
-
-
Method Details
-
eval
导致立即执行源为作为第一个参数传递的字符串的脚本。在执行之前,脚本可能会被重新解析或重新编译。从先前执行中留在引擎中的状态,包括变量值和已编译的过程,在此执行期间可能可见。- 参数:
-
script
- 脚本引擎执行的脚本。 -
context
- 一个ScriptContext
,在不同作用域中公开属性集。作用域ScriptContext.GLOBAL_SCOPE
和ScriptContext.ENGINE_SCOPE
的含义在规范中定义。
ScriptContext
的ENGINE_SCOPE
Bindings
包含在此脚本执行期间要使用的脚本变量绑定到应用程序对象。 - 返回:
- 从脚本执行中返回的值。
- 抛出:
-
ScriptException
- 如果脚本中发生错误。ScriptEngines应为底层脚本实现抛出的已检查异常创建并抛出ScriptException
包装器。 -
NullPointerException
- 如果任一参数为null。
-
eval
与eval(String, ScriptContext)
相同,其中脚本的源从Reader
读取。- 参数:
-
reader
- 脚本引擎执行的脚本的源。 -
context
- 传递给脚本引擎的ScriptContext
。 - 返回:
- 从脚本执行中返回的值。
- 抛出:
-
ScriptException
- 如果脚本中发生错误。ScriptEngines应为底层脚本实现抛出的已检查异常创建并抛出ScriptException
包装器。 -
NullPointerException
- 如果任一参数为null。
-
eval
执行指定的脚本。使用ScriptEngine
的默认ScriptContext
。- 参数:
-
script
- 要执行的脚本语言源。 - 返回:
- 从脚本执行中返回的值。
- 抛出:
-
ScriptException
- 如果脚本中发生错误。ScriptEngines应为底层脚本实现抛出的已检查异常创建并抛出ScriptException
包装器。 -
NullPointerException
- 如果参数为null。
-
eval
与eval(String)
相同,只是脚本的源作为Reader
提供。- 参数:
-
reader
- 脚本的源。 - 返回:
- 脚本返回的值。
- 抛出:
-
ScriptException
- 如果脚本中发生错误。ScriptEngines应为底层脚本实现抛出的已检查异常创建并抛出ScriptException
包装器。 -
NullPointerException
- 如果参数为null。
-
eval
使用Bindings
参数作为ScriptEngine
在脚本执行期间的ENGINE_SCOPE
Bindings
执行脚本。使用默认ScriptContext
的Reader
、Writer
和非ENGINE_SCOPE
Bindings
。不更改ScriptEngine
的ENGINE_SCOPE
Bindings
,其映射在脚本执行期间不会改变。- 参数:
-
script
- 脚本的源代码。 -
n
- 用于脚本执行的属性绑定。 - 返回:
- 脚本返回的值。
- 抛出:
-
ScriptException
- 如果脚本中发生错误。ScriptEngines应该为底层脚本实现抛出的已检查异常创建并抛出ScriptException
包装器。 -
NullPointerException
- 如果任一参数为null。
-
eval
与eval(String, Bindings)
相同,只是脚本的源代码以Reader
形式提供。- 参数:
-
reader
- 脚本的源代码。 -
n
- 属性绑定。 - 返回:
- 脚本返回的值。
- 抛出:
-
ScriptException
- 如果脚本中发生错误。ScriptEngines应该为底层脚本实现抛出的已检查异常创建并抛出ScriptException
包装器。 -
NullPointerException
- 如果任一参数为null。
-
put
在ScriptEngine的状态中设置一个键/值对,该键/值对可能会创建用于执行脚本的Java语言绑定,或以其他方式使用,具体取决于键是否保留。必须具有与getBindings(ScriptContext.ENGINE_SCOPE).put
相同的效果。- 参数:
-
key
- 要添加的命名值的名称 -
value
- 要添加的命名值的值。 - 抛出:
-
NullPointerException
- 如果键为null。 -
IllegalArgumentException
- 如果键为空。
-
get
检索在此引擎状态中设置的值。该值可能是使用setValue
设置的值,或者是ScriptEngine
状态中的其他值,具体取决于实现。必须具有与getBindings(ScriptContext.ENGINE_SCOPE).get
相同的效果。- 参数:
-
key
- 要返回其值的键 - 返回:
- 给定键的值
- 抛出:
-
NullPointerException
- 如果键为null。 -
IllegalArgumentException
- 如果键为空。
-
getBindings
返回命名值的作用域。可能的作用域包括:
ScriptContext.GLOBAL_SCOPE
- 表示全局作用域的一组命名值。如果此ScriptEngine
由ScriptEngineManager
创建,则管理器会设置全局作用域绑定。如果没有与此ScriptEngine
关联的全局作用域,则可能为null
ScriptContext.ENGINE_SCOPE
- 表示此ScriptEngine
状态的一组命名值。这些值通常在脚本中使用相关键作为变量名可见。ScriptEngine
的默认ScriptContext
中定义的任何其他作用域值。
返回的Bindings
实例必须与在ScriptEngine
的默认ScriptContext
上使用相应参数调用getBindings
方法返回的实例相同。- 参数:
-
scope
- 要返回的Bindings
的ScriptContext.ENGINE_SCOPE
或ScriptContext.GLOBAL_SCOPE
。ScriptContext
的实现可以定义其他作用域。如果ScriptEngine
的默认ScriptContext
定义了其他作用域,可以传递其中任何一个以获取相应的Bindings
。 - 返回:
-
指定作用域的
Bindings
。 - 抛出:
-
IllegalArgumentException
- 如果指定的作用域无效
-
setBindings
设置要由脚本使用的命名值的作用域。可能的作用域包括:
ScriptContext.ENGINE_SCOPE
- 指定的Bindings
替换ScriptEngine
的引擎作用域。ScriptContext.GLOBAL_SCOPE
- 指定的Bindings
必须作为GLOBAL_SCOPE
可见。ScriptEngine
的默认ScriptContext
中定义的任何其他作用域值。
该方法必须具有与在ScriptEngine
的默认ScriptContext
上使用scope
的相应值调用setBindings
方法相同的效果。- 参数:
-
bindings
- 指定作用域的Bindings
。 -
scope
- 指定的作用域。可以是ScriptContext.ENGINE_SCOPE
、ScriptContext.GLOBAL_SCOPE
或任何其他有效的作用域值。 - 抛出:
-
IllegalArgumentException
- 如果作用域无效 -
NullPointerException
- 如果绑定为null且作用域为ScriptContext.ENGINE_SCOPE
-
createBindings
Bindings createBindings()返回一个未初始化的Bindings
。- 返回:
-
可用于替换此
ScriptEngine
状态的Bindings
。
-
getContext
ScriptContext getContext()返回ScriptEngine
的默认ScriptContext
,当未指定ScriptContext
时,其绑定、Reader和Writer用于脚本执行。- 返回:
-
ScriptEngine
的默认ScriptContext
。
-
setContext
设置ScriptEngine
的默认ScriptContext
,当未指定ScriptContext
时,其绑定、Reader和Writer用于脚本执行。- 参数:
-
context
- 将替换ScriptEngine
中默认ScriptContext
的ScriptContext
。 - 抛出:
-
NullPointerException
- 如果上下文为null。
-
getFactory
ScriptEngineFactory getFactory()返回属于此ScriptEngine
所属类的ScriptEngineFactory
。- 返回:
-
ScriptEngineFactory
-