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