javax.script

接口
异常
所有已知实现类:
AbstractScriptEngine

public interface ScriptEngine

ScriptEngine 是基础接口,该接口的方法在此规范的每个实现中都必须具有完整的功能。

这些方法提供基本的脚本功能。为这个简单接口编写的应用程序应该对每个实现稍做修改就能够运行。这包括执行脚本的方法,以及设置和获取值的方法。

这些值是两种类型的键/值对。组成第一种类型的键/值对中的键是此规范或个别实现中保留和定义的键。包含保留键的键/值对中的值具有指定的含义。

另一种类型由那些创建 Java 语言 Bindings 的键/值对组成,值通常通过相应键或其装饰的形式用脚本表示。

从以下版本开始:
1.6

字段摘要
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 参数作为 ScriptEngineENGINE_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 被用于脚本执行。
 

字段详细信息

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_SCOPEScriptContext.ENGINE_SCOPE 的含义。

ScriptContextENGINE_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 参数作为 ScriptEngineENGINE_SCOPE Bindings。使用默认 ScriptContextReaderWriter 和非 ENGINE_SCOPE BindingsScriptEngineENGINE_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 调用 ScriptContextgetBindings 方法(使用相应参数)所返回的实例一样。

参数:
scope - ScriptContext.ENGINE_SCOPEScriptContext.GLOBAL_SCOPE,指定要返回的 BindingsScriptContext 的实现可以定义其他范围。如果 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 调用 ScriptContextsetBindings 方法(使用 scope 的相应值)的效果相同。

参数:
bindings - 指定范围的 Bindings
scope - 指定的范围。 ScriptContext.ENGINE_SCOPEScriptContext.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 中默认 ScriptContextScriptContext
抛出:
NullPointerException - 如果 context 为 null。

getFactory

ScriptEngineFactory getFactory()
返回此 ScriptEngine 所属的类的 ScriptEngineFactory

返回:
ScriptEngineFactory