javax.script
接口 ScriptEngine
所有已知实现类:
-
AbstractScriptEngine
public interface ScriptEngine
ScriptEngine
是基础接口,该接口的方法在此规范的每个实现中都必须具有完整的功能。这些方法提供基本的脚本功能。为这个简单接口编写的应用程序应该对每个实现稍做修改就能够运行。这包括执行脚本的方法,以及设置和获取值的方法。这些值是两种类型的键/值对。组成第一种类型的键/值对中的键是此规范或个别实现中保留和定义的键。包含保留键的键/值对中的值具有指定的含义。另一种类型由那些创建 Java 语言 Bindings 的键/值对组成,值通常通过相应键或其装饰的形式用脚本表示。
从以下版本开始:
-
1.6
ARGV
static final String ARGV
-
指定值的保留键,它将一个位置参数数组传递给某一脚本。
另请参见:
-
常量字段值
FILENAME
static final String FILENAME
-
指定值的保留键,它是将被执行的文件的名称。
另请参见:
-
常量字段值
ENGINE
static final String ENGINE
-
指定值的保留键,它是
ScriptEngine
实现的名称。
另请参见:
-
常量字段值
ENGINE_VERSION
static final String ENGINE_VERSION
-
指定值的保留键,它标识
ScriptEngine
实现的版本。
另请参见:
-
常量字段值
NAME
static final String NAME
-
指定值的保留键,它标识脚本语言的短名称。
ScriptEngineManager
使用该名称查找具有
getEngineByName
方法中的给定名称的
ScriptEngine
。
另请参见:
-
常量字段值
LANGUAGE
static final String LANGUAGE
-
指定值的保留键,它是受实现支持的 Scripting Language 的完全名称。
另请参见:
-
常量字段值
LANGUAGE_VERSION
static final String LANGUAGE_VERSION
-
指定值的保留键,它标识受实现支持的脚本语言的版本。
另请参见:
-
常量字段值
eval
Object eval(String script,
ScriptContext context)
throws ScriptException
-
立即执行脚本,该脚本的源是作为第一个参数传递的 String。脚本在执行之前,可以重新解析或重新编译。以前的执行在引擎中遗留的状态(包括变量值和已编译的程序)在这次执行中是可见的。
-
参数:
-
script
- 将由脚本引擎执行的脚本。
-
context
- 公开不同范围中的属性集的
ScriptContext
。规范中定义了范围
ScriptContext.GLOBAL_SCOPE
和
ScriptContext.ENGINE_SCOPE
的含义。
ScriptContext
的
ENGINE_SCOPE
Bindings
包含将在此脚本执行期间使用的应用程序对象脚本变量的 bindings。
返回:
-
执行脚本所返回的值。
抛出:
-
ScriptException
- 如果脚本发生错误。对于底层脚本实现抛出的经过检查的 Exception,ScriptEngine 应该创建并抛出
ScriptException
包装器。
-
NullPointerException
- 如果任一参数为 null。
eval
Object eval(Reader reader,
ScriptContext context)
throws ScriptException
-
与
eval(String, ScriptContext)
相同,其中脚本的源是从
Reader
读取的。
-
参数:
-
reader
- 将由脚本引擎执行的脚本的源。
-
context
- 传递给脚本引擎的
ScriptContext
。
返回:
-
执行脚本所返回的值。
抛出:
-
ScriptException
- 如果脚本发生错误。
-
NullPointerException
- 如果任一参数为 null。
eval
Object eval(String script)
throws ScriptException
-
执行指定的脚本。使用
ScriptEngine
的默认
ScriptContext
。
-
参数:
-
script
- 要执行的脚本语言源。
返回:
-
执行脚本所返回的值。
抛出:
-
ScriptException
- 如果脚本发生错误。
-
NullPointerException
- 如果参数为 null。
eval
Object eval(Reader reader)
throws ScriptException
-
除了脚本的源是以
Reader
形式提供的外,与
eval(String)
相同。
-
参数:
-
reader
- 脚本的源。
返回:
-
脚本返回的值。
抛出:
-
ScriptException
- 如果脚本发生错误。
-
NullPointerException
- 如果参数为 null。
eval
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。
eval
Object eval(Reader reader,
Bindings n)
throws ScriptException
-
除了脚本的源是以
Reader
形式提供的外,与
eval(String, Bindings)
相同。
-
参数:
-
reader
- 脚本的源。
-
n
- 属性的
Bindings
。
返回:
-
脚本返回的值。
抛出:
-
ScriptException
- 如果发生错误。
-
NullPointerException
- 如果任一参数为 null。
put
void put(String key,
Object value)
-
设置 ScriptEngine 的状态中的键/值对,它创建一个将在脚本执行中使用或者以其他方式使用的 Java Language Binding,具体取决于该键是否被保留。必须与
getBindings(ScriptContext.ENGINE_SCOPE).put
具有相同的效果。
-
参数:
-
key
- 要添加的指定值的名称
-
value
- 要添加的指定值的值。
抛出:
-
NullPointerException
- 如果 key 为 null。
-
IllegalArgumentException
- 如果 key 为空。
get
Object get(String key)
-
获取在此引擎的状态中设置的值。该值可能是使用
setValue
设置的值,也可能是
ScriptEngine
状态中的某个其他值,具体取决于实现。必须与
getBindings(ScriptContext.ENGINE_SCOPE).get
具有相同的效果。
-
参数:
-
key
- 将返回其值的键
返回:
-
给定键的值
抛出:
-
NullPointerException
- 如果 key 为 null。
-
IllegalArgumentException
- 如果 key 为空。
getBindings
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
- 如果指定范围无效
setBindings
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
createBindings
Bindings createBindings()
-
返回一个未初始化的
Bindings
。
-
返回:
-
用来替代此
ScriptEngine
状态的
Bindings
。
getContext
ScriptContext getContext()
-
返回
ScriptEngine
的默认
ScriptContext
,在没有指定
ScriptContext
时,该 ScriptEngine 的 Bindings、Reader 和 Writer 被用于脚本执行。
-
返回:
-
ScriptEngine
的默认
ScriptContext
。
setContext
void setContext(ScriptContext context)
-
设置
ScriptEngine
的默认
ScriptContext
,在没有指定
ScriptContext
时,该 ScriptEngine 的 Bindings、Reader 和 Writer 被用于脚本执行。
-
参数:
-
context
- 将替代
ScriptEngine
中默认
ScriptContext
的
ScriptContext
。
抛出:
-
NullPointerException
- 如果 context 为 null。
getFactory
ScriptEngineFactory getFactory()
-
返回此
ScriptEngine
所属的类的
ScriptEngineFactory
。
-
返回:
-
ScriptEngineFactory
提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。