接口 ScriptEngine

所有已知的实现类:
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(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 参数作为 ScriptEngineENGINE_SCOPE Bindings 来执行脚本。
    eval(String script, ScriptContext context)
    导致脚本的立即执行,其源是作为第一个参数传递的字符串。
    get(String key)
    检索在此引擎的状态中设置的值。
    getBindings(int scope)
    返回命名值的范围。
    返回 ScriptEngine 的默认 ScriptContext,当未指定 ScriptContext 时,其 Bindings、Reader 和 Writers 用于脚本执行。
    为这个 ScriptEngine 所属的类返回一个 ScriptEngineFactory
    void
    put(String key, Object value)
    在 ScriptEngine 的状态中设置一个键/值对,它可以创建一个 Java 语言绑定以用于脚本的执行或以其他方式使用,具体取决于键是否被保留。
    void
    setBindings(Bindings bindings, int scope)
    设置脚本使用的命名值的范围。
    void
    设置 ScriptEngine 的默认 ScriptContext,当未指定 ScriptContext 时,其 Bindings、Reader 和 Writers 用于脚本执行。
  • 字段详细信息

    • 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
      命名值的保留键,用于标识实现支持的脚本语言版本。
      参见:
  • 方法详情

    • eval

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

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

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

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

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

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

      Object  eval(Reader  reader, Bindings  n) throws ScriptException
      eval(String, Bindings) 相同,除了脚本源作为 Reader 提供。
      参数:
      reader - 脚本的来源。
      n - 属性的 Bindings
      返回:
      脚本返回的值。
      抛出:
      ScriptException - 如果脚本中出现错误。 ScriptEngines 应该为底层脚本实现抛出的已检查异常创建并抛出 ScriptException 包装器。
      NullPointerException - 如果任一参数为空。
    • put

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

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

      Bindings  getBindings(int scope)
      返回命名值的范围。可能的范围是:

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


      返回的 Bindings 实例必须与 ScriptContextgetBindings 方法返回的实例相同,该方法使用 ScriptEngine 的默认 ScriptContext 上的相应参数调用。
      参数:
      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 - 如果范围无效
      NullPointerException - 如果绑定为空且范围为 ScriptContext.ENGINE_SCOPE
    • createBindings

      Bindings  createBindings()
      返回未初始化的 Bindings
      返回:
      一个 Bindings 可用于替换此 ScriptEngine 的状态。
    • getContext

      ScriptContext  getContext()
      返回 ScriptEngine 的默认 ScriptContext,当未指定 ScriptContext 时,其 Bindings、Reader 和 Writers 用于脚本执行。
      返回:
      ScriptEngine 的默认 ScriptContext
    • setContext

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

      ScriptEngineFactory  getFactory()
      为这个 ScriptEngine 所属的类返回一个 ScriptEngineFactory
      返回:
      ScriptEngineFactory