javax.script

接口
异常
java.lang.Object
  继承者 javax.script.ScriptEngineManager

public class ScriptEngineManager
     
extends Object

ScriptEngineManagerScriptEngine 类实现一个发现和实例化机制,还维护一个键/值对集合来存储所有 Manager 创建的引擎所共享的状态。此类使用服务提供者机制枚举所有的 ScriptEngineFactory 实现。

ScriptEngineManager 提供了一个方法,可以返回一个所有工厂实现和基于语言名称、文件扩展名和 mime 类型查找工厂的实用方法所组成的数组。

键/值对的 Bindings(即由管理器维护的 "Global Scope")对于 ScriptEngineManager 创建的所有 ScriptEngine 实例都是可用的。Bindings 中的值通常公开于所有脚本中。

从以下版本开始:
1.6

构造方法摘要
ScriptEngineManager()
          如果调用者可访问线程上下文 ClassLoader,则调用此构造方法的效果与调用 ScriptEngineManager(Thread.currentThread().getContextClassLoader()) 相同。
ScriptEngineManager(ClassLoader loader)
          此构造方法使用服务调用者机制加载对于给定 ClassLoader 可见的 ScriptEngineFactory 实现。
 
方法摘要
 Object get(String key)
          获取 Global Scope 中指定键的值。
 Bindings getBindings()
          getBindings 返回 globalScope 字段的值。
 ScriptEngine getEngineByExtension(String extension)
          查找并创建一个给定扩展的 ScriptEngine
 ScriptEngine getEngineByMimeType(String mimeType)
          查找并创建一个给定 mime 类型的 ScriptEngine
 ScriptEngine getEngineByName(String shortName)
          查找并创建一个给定名称的 ScriptEngine
 List<ScriptEngineFactory> getEngineFactories()
          返回一个数组,该数组的元素是发现机制找到的所有 ScriptEngineFactory 类的实例。
 void put(String key, Object value)
          设置 Global Scope 中指定的键/值对。
 void registerEngineExtension(String extension, ScriptEngineFactory factory)
          注册一个 ScriptEngineFactory 来处理扩展。
 void registerEngineMimeType(String type, ScriptEngineFactory factory)
          注册一个 ScriptEngineFactory 来处理 mime 类型。
 void registerEngineName(String name, ScriptEngineFactory factory)
          注册一个 ScriptEngineFactory 来处理语言名称。
 void setBindings(Bindings bindings)
          setBindings 存储 globalScope 字段中的指定 Bindings
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

ScriptEngineManager

public ScriptEngineManager()
如果调用者可访问线程上下文 ClassLoader,则调用此构造方法的效果与调用 ScriptEngineManager(Thread.currentThread().getContextClassLoader()) 相同。否则,效果与调用 ScriptEngineManager(null) 相同。

另请参见:
Thread.getContextClassLoader()

ScriptEngineManager

public ScriptEngineManager(ClassLoader loader)
此构造方法使用 服务调用者机制加载对于给定 ClassLoader 可见的 ScriptEngineFactory 实现。

如果 loader 为 null,则加载与平台打包在一起的脚本引擎工厂,以及常用扩展目录(已安装的扩展)中的脚本引擎工厂。

参数:
loader - 用来发现脚本引擎工厂的 ClassLoader。
方法详细信息

setBindings

public void setBindings(Bindings bindings)
setBindings 存储 globalScope 字段中的指定 Bindings。ScriptEngineManager 将此 Bindings 设置为由它创建的 ScriptEngine 对象的全局 bindings。

参数:
bindings - 指定的 Bindings
抛出:
IllegalArgumentException - 如果 bindings 为 null。

getBindings

public Bindings getBindings()
getBindings 返回 globalScope 字段的值。ScriptEngineManager 将此 Bindings 设置为由它创建的 ScriptEngine 对象的全局 bindings。

返回:
globalScope 字段。

put

public void put(String key,
                Object value)
设置 Global Scope 中指定的键/值对。

参数:
key - 要设置的键
value - 要设置的值。
抛出:
NullPointerException - 如果 key 为 null。
IllegalArgumentException - 如果 key 为空字符串。

get

public Object get(String key)
获取 Global Scope 中指定键的值。

参数:
key - 将返回其值的键。
返回:
指定键的值。

getEngineByName

public ScriptEngine getEngineByName(String shortName)
查找并创建一个给定名称的 ScriptEngine。该算法首先查找一个 ScriptEngineFactory,该 ScriptEngineFactory 已经针对给定名称使用 registerEngineName 方法注册为处理程序。

如果没有找到这样的 ScriptEngineFactory,则搜索构造方法存储的 ScriptEngineFactory 实例数组,以获得具有指定名称的 ScriptEngineFactory。如果通过这两种方法之一找到了一个 ScriptEngineFactory,则用它来创建 ScriptEngine 实例。

参数:
shortName - ScriptEngine 实现的短名称,由其 ScriptEngineFactorygetNames 方法返回。
返回:
搜索到的工厂所创建的 ScriptEngine。如果没有找到这样的工厂,则返回 null。 ScriptEngineManager 将它自己的 globalScope Bindings 设置为新建 ScriptEngineGLOBAL_SCOPE Bindings
抛出:
NullPointerException - 如果 shortName 为 null。

getEngineByExtension

public ScriptEngine getEngineByExtension(String extension)
查找并创建一个给定扩展的 ScriptEngine。使用 getEngineByName 所使用的算法,不同之处在于搜索从查找已使用 registerEngineExtension 注册以处理给定扩展的 ScriptEngineFactory 开始。

参数:
extension - 给定扩展
返回:
用来处理具有此扩展的引擎。如果没有找到这样的引擎,则返回 null
抛出:
NullPointerException - 如果 extension 为 null。

getEngineByMimeType

public ScriptEngine getEngineByMimeType(String mimeType)
查找并创建一个给定 mime 类型的 ScriptEngine。使用 getEngineByName 所使用的算法,不同之处在于搜索从查找已使用 registerEngineMimeType 注册以处理给定 mime 类型的 ScriptEngineFactory 开始。

参数:
mimeType - 给定 mime 类型
返回:
用来处理具有此 mime 类型的脚本的引擎。如果没有找到这样的引擎,则返回 null
抛出:
NullPointerException - 如果 mimeType 为 null。

getEngineFactories

public List<ScriptEngineFactory> getEngineFactories()
返回一个数组,该数组的元素是发现机制找到的所有 ScriptEngineFactory 类的实例。

返回:
所有已发现 ScriptEngineFactory 所组成的列表。

registerEngineName

public void registerEngineName(String name,
                               ScriptEngineFactory factory)
注册一个 ScriptEngineFactory 来处理语言名称。重写所有使用发现机制找到的这类关联。

参数:
name - 要与 ScriptEngineFactory 关联的名称。
factory - 要与给定名称关联的类。
抛出:
NullPointerException - 如果任何参数为 null。

registerEngineMimeType

public void registerEngineMimeType(String type,
                                   ScriptEngineFactory factory)
注册一个 ScriptEngineFactory 来处理 mime 类型。重写所有使用发现机制找到的这类关联。

参数:
type - 要与 ScriptEngineFactory 关联的 mime 类型。
factory - 要与给定 mime 类型关联的类。
抛出:
NullPointerException - 如果任何参数为 null。

registerEngineExtension

public void registerEngineExtension(String extension,
                                    ScriptEngineFactory factory)
注册一个 ScriptEngineFactory 来处理扩展。重写所有使用发现机制找到的这类关联。

参数:
extension - 要与 ScriptEngineFactory 关联的扩展类型。
factory - 要与给定扩展关联的类。
抛出:
NullPointerException - 如果任何参数为 null。