public interface ScriptEngine
ScriptEngine
是基础接口,该接口的方法在此规范的每个实现中都必须具有完整的功能。
这些方法提供基本的脚本功能。为这个简单接口编写的应用程序应该对每个实现稍做修改就能够运行。这包括执行脚本的方法,以及设置和获取值的方法。
这些值是两种类型的键/值对。组成第一种类型的键/值对中的键是此规范或个别实现中保留和定义的键。包含保留键的键/值对中的值具有指定的含义。
另一种类型由那些创建 Java 语言 Bindings 的键/值对组成,值通常通过相应键或其装饰的形式用脚本表示。
字段摘要 | |
---|---|
static String |
ARGV 指定值的保留键,它将一个位置参数数组传递给某一脚本。 |
static String |
ENGINE 指定值的保留键,它是 ScriptEngine 实现的名称。 |
static String |
ENGINE_VERSION 指定值的保留键,它标识 ScriptEngine 实现的版本。 |
static String |
FILENAME 指定值的保留键,它是将被执行的文件的名称。 |
static String |
LANGUAGE 指定值的保留键,它是受实现支持的 Scripting Language 的完全名称。 |
static String |
LANGUAGE_VERSION 指定值的保留键,它标识受实现支持的脚本语言的版本。 |
static String |
NAME 指定值的保留键,它标识脚本语言的短名称。 |
方法摘要 | |
---|---|
Bindings |
createBindings() 返回一个未初始化的 Bindings 。 |
Object |
eval(Reader reader) 除了脚本的源是以 Reader 形式提供的外,与 eval(String) 相同。 |
Object |
eval(Reader reader, Bindings n) 除了脚本的源是以 Reader 形式提供的外,与 eval(String, Bindings) 相同。 |
Object |
eval(Reader reader, ScriptContext context) 与 eval(String, ScriptContext) 相同,其中脚本的源是从 Reader 读取的。 |
Object |
eval(String script) 执行指定的脚本。 |
Object |
eval(String script, Bindings n) 执行脚本,脚本执行期间使用 Bindings 参数作为 ScriptEngine 的 ENGINE_SCOPE Bindings 。 |
Object |
eval(String script, ScriptContext context) 立即执行脚本,该脚本的源是作为第一个参数传递的 String。 |
Object |
get(String key) 获取在此引擎的状态中设置的值。 |
Bindings |
getBindings(int scope) 返回指定值的范围。 |
ScriptContext |
getContext() 返回 ScriptEngine 的默认 ScriptContext ,在没有指定 ScriptContext 时,该 ScriptEngine 的 Bindings、Reader 和 Writer 被用于脚本执行。 |
ScriptEngineFactory |
getFactory() 返回此 ScriptEngine 所属的类的 ScriptEngineFactory 。 |
void |
put(String key, Object value) 设置 ScriptEngine 的状态中的键/值对,它创建一个将在脚本执行中使用或者以其他方式使用的 Java Language Binding,具体取决于该键是否被保留。 |
void |
setBindings(Bindings bindings, int scope) 设置将由脚本使用的指定值的范围。 |
void |
setContext(ScriptContext context) 设置 ScriptEngine 的默认 ScriptContext ,在没有指定 ScriptContext 时,该 ScriptEngine 的 Bindings、Reader 和 Writer 被用于脚本执行。 |
字段详细信息 |
---|
static final String ARGV
static final String FILENAME
static final String ENGINE
ScriptEngine
实现的名称。
static final String ENGINE_VERSION
ScriptEngine
实现的版本。
static final String NAME
ScriptEngineManager
使用该名称查找具有
getEngineByName
方法中的给定名称的
ScriptEngine
。
static final String LANGUAGE
static final String LANGUAGE_VERSION
方法详细信息 |
---|
Object eval(String script, ScriptContext context) throws ScriptException
script
- 将由脚本引擎执行的脚本。
context
- 公开不同范围中的属性集的
ScriptContext
。规范中定义了范围
ScriptContext.GLOBAL_SCOPE
和
ScriptContext.ENGINE_SCOPE
的含义。
ScriptContext
的
ENGINE_SCOPE
Bindings
包含将在此脚本执行期间使用的应用程序对象脚本变量的 bindings。
ScriptException
- 如果脚本发生错误。对于底层脚本实现抛出的经过检查的 Exception,ScriptEngine 应该创建并抛出
ScriptException
包装器。
NullPointerException
- 如果任一参数为 null。
Object eval(Reader reader, ScriptContext context) throws ScriptException
eval(String, ScriptContext)
相同,其中脚本的源是从
Reader
读取的。
reader
- 将由脚本引擎执行的脚本的源。
context
- 传递给脚本引擎的
ScriptContext
。
ScriptException
- 如果脚本发生错误。
NullPointerException
- 如果任一参数为 null。
Object eval(String script) throws ScriptException
ScriptEngine
的默认
ScriptContext
。
script
- 要执行的脚本语言源。
ScriptException
- 如果脚本发生错误。
NullPointerException
- 如果参数为 null。
Object eval(Reader reader) throws ScriptException
Reader
形式提供的外,与
eval(String)
相同。
reader
- 脚本的源。
ScriptException
- 如果脚本发生错误。
NullPointerException
- 如果参数为 null。
Object eval(String script, Bindings n) throws ScriptException
Bindings
参数作为
ScriptEngine
的
ENGINE_SCOPE
Bindings
。使用默认
ScriptContext
的
Reader
、
Writer
和非
ENGINE_SCOPE
Bindings
。
ScriptEngine
的
ENGINE_SCOPE
Bindings
不变,其映射关系不随脚本执行发生改变。
script
- 脚本的源。
n
- 将用于脚本执行的属性的
Bindings
。
ScriptException
- 如果脚本发生错误。
NullPointerException
- 如果任一参数为 null。
Object eval(Reader reader, Bindings n) throws ScriptException
Reader
形式提供的外,与
eval(String, Bindings)
相同。
reader
- 脚本的源。
n
- 属性的
Bindings
。
ScriptException
- 如果发生错误。
NullPointerException
- 如果任一参数为 null。
void put(String key, Object value)
getBindings(ScriptContext.ENGINE_SCOPE).put
具有相同的效果。
key
- 要添加的指定值的名称
value
- 要添加的指定值的值。
NullPointerException
- 如果 key 为 null。
IllegalArgumentException
- 如果 key 为空。
Object get(String key)
setValue
设置的值,也可能是
ScriptEngine
状态中的某个其他值,具体取决于实现。必须与
getBindings(ScriptContext.ENGINE_SCOPE).get
具有相同的效果。
key
- 将返回其值的键
NullPointerException
- 如果 key 为 null。
IllegalArgumentException
- 如果 key 为空。
Bindings getBindings(int scope)
ScriptContext.GLOBAL_SCOPE
- 表示全局范围的指定值的集合。如果此 ScriptEngine
是通过 ScriptEngineManager
创建的,则该管理器将设置全局范围 bindings。如果没有与此 ScriptEngine
关联的全局范围,则此范围可能为 null
ScriptContext.ENGINE_SCOPE
- 表示此 ScriptEngine
的状态的指定值的集合。在使用关联键作为变量名称的脚本中,这些值通常是可见的。ScriptEngine
的默认 ScriptContext
中定义的其他范围值。 Bindings
实例必须与对
ScriptEngine
的默认
ScriptContext
调用
ScriptContext
的
getBindings
方法(使用相应参数)所返回的实例一样。
scope
-
ScriptContext.ENGINE_SCOPE
或
ScriptContext.GLOBAL_SCOPE
,指定要返回的
Bindings
。
ScriptContext
的实现可以定义其他范围。如果
ScriptEngine
的默认
ScriptContext
定义了其他范围,则这些范围都可以传递给该参数,以获取相应的
Bindings
。
Bindings
。
IllegalArgumentException
- 如果指定范围无效
void setBindings(Bindings bindings, int scope)
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
- 如果 scope 有效
NullPointerException
- 如果 bindings 为 null 并且 scope 为
ScriptContext.ENGINE_SCOPE
Bindings createBindings()
Bindings
。
ScriptEngine
状态的
Bindings
。
ScriptContext getContext()
ScriptEngine
的默认
ScriptContext
,在没有指定
ScriptContext
时,该 ScriptEngine 的 Bindings、Reader 和 Writer 被用于脚本执行。
ScriptEngine
的默认
ScriptContext
。
void setContext(ScriptContext context)
ScriptEngine
的默认
ScriptContext
,在没有指定
ScriptContext
时,该 ScriptEngine 的 Bindings、Reader 和 Writer 被用于脚本执行。
context
- 将替代
ScriptEngine
中默认
ScriptContext
的
ScriptContext
。
NullPointerException
- 如果 context 为 null。
ScriptEngineFactory getFactory()
ScriptEngine
所属的类的
ScriptEngineFactory
。
ScriptEngineFactory