Module java.scripting
Package javax.script

Interface ScriptEngine

所有已知的实现类:
AbstractScriptEngine

public interface ScriptEngine
ScriptEngine是基本接口,其方法在规范的每个实现中必须完全可用。

这些方法提供基本的脚本功能。编写为这个简单接口的应用程序预计在每个实现中都能以最小的修改工作。它包括执行脚本的方法,以及设置和获取值的方法。

这些值是两种类型的键/值对。第一种类型的对包括那些键在本规范中保留和定义的或由各个实现定义的。具有保留键的对中的值具有指定的含义。

另一种类型的对包括创建Java语言绑定的对,这些值通常在脚本中由相应的键或其装饰形式表示。
自1.6版本起:
1.6
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static 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 Type
    Method
    Description
    返回一个未初始化的Bindings
    eval(Reader reader)
    eval(String)相同,只是脚本的源作为Reader提供。
    eval(Reader reader, Bindings n)
    eval(String, Bindings)相同,只是脚本的源作为Reader提供。
    eval(Reader reader, ScriptContext context)
    eval(String, ScriptContext)相同,其中脚本的源从Reader读取。
    eval(String script)
    执行指定的脚本。
    eval(String script, Bindings n)
    使用Bindings参数作为ScriptEngine在脚本执行期间的ENGINE_SCOPE Bindings执行脚本。
    eval(String script, ScriptContext context)
    导致立即执行源为作为第一个参数传递的字符串的脚本。
    get(String key)
    检索在此引擎状态中设置的值。
    getBindings(int scope)
    返回命名值的作用域。
    返回ScriptEngine的默认ScriptContext,当没有指定ScriptContext时,其Bindings、Reader和Writer用于脚本执行。
    为此ScriptEngine所属的类返回一个ScriptEngineFactory
    void
    put(String key, Object value)
    在ScriptEngine的状态中设置一个键/值对,该键/值对可能创建一个Java语言绑定,用于在脚本执行中使用,或以其他方式使用,具体取决于键是否保留。
    void
    setBindings(Bindings bindings, int scope)
    设置要由脚本使用的命名值的作用域。
    void
    设置ScriptEngine的默认ScriptContext,当没有指定ScriptContext时,其Bindings、Reader和Writer用于脚本执行。
  • Field Details

    • 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
      支持的实现的脚本语言的全名的命名值的保留键。
      参见:
    • LANGUAGE_VERSION

      static final String LANGUAGE_VERSION
      标识实现支持的脚本语言版本的命名值的保留键。
      参见:
  • Method Details

    • eval

      Object eval(String script, ScriptContext context) throws ScriptException
      导致立即执行源为作为第一个参数传递的字符串的脚本。在执行之前,脚本可能会被重新解析或重新编译。从先前执行中留在引擎中的状态,包括变量值和已编译的过程,在此执行期间可能可见。
      参数:
      script - 脚本引擎执行的脚本。
      context - 一个ScriptContext,在不同作用域中公开属性集。作用域ScriptContext.GLOBAL_SCOPEScriptContext.ENGINE_SCOPE的含义在规范中定义。

      ScriptContextENGINE_SCOPE Bindings包含在此脚本执行期间要使用的脚本变量绑定到应用程序对象。
      返回:
      从脚本执行中返回的值。
      抛出:
      ScriptException - 如果脚本中发生错误。ScriptEngines应为底层脚本实现抛出的已检查异常创建并抛出ScriptException包装器。
      NullPointerException - 如果任一参数为null。
    • eval

      Object eval(Reader reader, ScriptContext context) throws ScriptException
      eval(String, ScriptContext)相同,其中脚本的源从Reader读取。
      参数:
      reader - 脚本引擎执行的脚本的源。
      context - 传递给脚本引擎的ScriptContext
      返回:
      从脚本执行中返回的值。
      抛出:
      ScriptException - 如果脚本中发生错误。ScriptEngines应为底层脚本实现抛出的已检查异常创建并抛出ScriptException包装器。
      NullPointerException - 如果任一参数为null。
    • eval

      Object eval(String script) throws ScriptException
      执行指定的脚本。使用ScriptEngine的默认ScriptContext
      参数:
      script - 要执行的脚本语言源。
      返回:
      从脚本执行中返回的值。
      抛出:
      ScriptException - 如果脚本中发生错误。ScriptEngines应为底层脚本实现抛出的已检查异常创建并抛出ScriptException包装器。
      NullPointerException - 如果参数为null。
    • eval

      Object eval(Reader reader) throws ScriptException
      eval(String)相同,只是脚本的源作为Reader提供。
      参数:
      reader - 脚本的源。
      返回:
      脚本返回的值。
      抛出:
      ScriptException - 如果脚本中发生错误。ScriptEngines应为底层脚本实现抛出的已检查异常创建并抛出ScriptException包装器。
      NullPointerException - 如果参数为null。
    • eval

      Object eval(String script, Bindings n) throws ScriptException
      使用Bindings参数作为ScriptEngine在脚本执行期间的ENGINE_SCOPE Bindings执行脚本。使用默认ScriptContextReaderWriter和非ENGINE_SCOPE Bindings。不更改ScriptEngineENGINE_SCOPE Bindings,其映射在脚本执行期间不会改变。
      参数:
      script - 脚本的源代码。
      n - 用于脚本执行的属性绑定。
      返回:
      脚本返回的值。
      抛出:
      ScriptException - 如果脚本中发生错误。ScriptEngines应该为底层脚本实现抛出的已检查异常创建并抛出ScriptException包装器。
      NullPointerException - 如果任一参数为null。
    • eval

      Object eval(Reader reader, Bindings n) throws ScriptException
      eval(String, Bindings)相同,只是脚本的源代码以Reader形式提供。
      参数:
      reader - 脚本的源代码。
      n - 属性绑定。
      返回:
      脚本返回的值。
      抛出:
      ScriptException - 如果脚本中发生错误。ScriptEngines应该为底层脚本实现抛出的已检查异常创建并抛出ScriptException包装器。
      NullPointerException - 如果任一参数为null。
    • put

      void put(String key, Object value)
      在ScriptEngine的状态中设置一个键/值对,该键/值对可能会创建用于执行脚本的Java语言绑定,或以其他方式使用,具体取决于键是否保留。必须具有与getBindings(ScriptContext.ENGINE_SCOPE).put相同的效果。
      参数:
      key - 要添加的命名值的名称
      value - 要添加的命名值的值。
      抛出:
      NullPointerException - 如果键为null。
      IllegalArgumentException - 如果键为空。
    • get

      Object get(String key)
      检索在此引擎状态中设置的值。该值可能是使用setValue设置的值,或者是ScriptEngine状态中的其他值,具体取决于实现。必须具有与getBindings(ScriptContext.ENGINE_SCOPE).get相同的效果。
      参数:
      key - 要返回其值的键
      返回:
      给定键的值
      抛出:
      NullPointerException - 如果键为null。
      IllegalArgumentException - 如果键为空。
    • getBindings

      Bindings getBindings(int scope)
      返回命名值的作用域。可能的作用域包括:

      • ScriptContext.GLOBAL_SCOPE - 表示全局作用域的一组命名值。如果此ScriptEngineScriptEngineManager创建,则管理器会设置全局作用域绑定。如果没有与此ScriptEngine关联的全局作用域,则可能为null
      • ScriptContext.ENGINE_SCOPE - 表示此ScriptEngine状态的一组命名值。这些值通常在脚本中使用相关键作为变量名可见。
      • ScriptEngine的默认ScriptContext中定义的任何其他作用域值。


      返回的Bindings实例必须与在ScriptEngine的默认ScriptContext上使用相应参数调用getBindings方法返回的实例相同。
      参数:
      scope - 要返回的BindingsScriptContext.ENGINE_SCOPEScriptContext.GLOBAL_SCOPEScriptContext的实现可以定义其他作用域。如果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上使用scope的相应值调用setBindings方法相同的效果。
      参数:
      bindings - 指定作用域的Bindings
      scope - 指定的作用域。可以是ScriptContext.ENGINE_SCOPEScriptContext.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

      void setContext(ScriptContext context)
      设置ScriptEngine的默认ScriptContext,当未指定ScriptContext时,其绑定、Reader和Writer用于脚本执行。
      参数:
      context - 将替换ScriptEngine中默认ScriptContextScriptContext
      抛出:
      NullPointerException - 如果上下文为null。
    • getFactory

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