public interface ScriptEngineFactory
ScriptEngineFactory 用于描述和实例化 ScriptEngines。
每个实现
ScriptEngine 的类都有一个对应的工厂,公开描述引擎类的元数据。
ScriptEngineManager 使用在 ServiceLoader 类中描述的服务提供程序加载器机制来获取 ScriptEngineFactory 实例。请参见 ScriptEngineManager() 和 ScriptEngineManager(java.lang.ClassLoader)。
- 自版本:
- 1.6
-
Method Summary
Modifier and TypeMethodDescription返回ScriptEngine的完整名称。返回ScriptEngine的版本。返回一个不可变的文件扩展名列表,通常用于标识由此ScriptEngine支持的语言编写的脚本。返回此ScriptEngine支持的脚本语言的名称。返回此ScriptEngine支持的脚本语言的版本。getMethodCallSyntax(String obj, String m, String... args) 返回一个字符串,可用于使用支持的脚本语言的语法调用 Java 对象的方法。返回一个不可变的与可以由引擎执行的脚本相关联的MIME类型列表。getNames()返回ScriptEngine的一组不可变的短名称,可以用来由ScriptEngineManager标识ScriptEngine。getOutputStatement(String toDisplay) 返回一个字符串,可用作语句以使用支持的脚本语言的语法显示指定的字符串。getParameter(String key) 返回其含义可能是特定于实现的属性的值。getProgram(String... statements) 返回具有给定语句的有效脚本语言可执行程序。返回与此ScriptEngineFactory关联的ScriptEngine实例。
-
Method Details
-
getEngineName
String getEngineName()返回ScriptEngine的完整名称。例如,基于 Mozilla Rhino Javascript 引擎的实现可能返回 Rhino Mozilla Javascript Engine。- 返回:
- 引擎实现的名称。
-
getEngineVersion
String getEngineVersion()返回ScriptEngine的版本。- 返回:
-
ScriptEngine实现的版本。
-
getExtensions
返回一个不可变的文件扩展名列表,通常用于标识由此ScriptEngine支持的语言编写的脚本。该数组由ScriptEngineManager用于实现其getEngineByExtension方法。- 返回:
- 扩展名列表。
-
getMimeTypes
返回一个不可变的与可以由引擎执行的脚本相关联的MIME类型列表。该列表由ScriptEngineManager类用于实现其getEngineByMimetype方法。- 返回:
- MIME 类型列表。
-
getNames
返回ScriptEngine的一组不可变的短名称,可以用来由ScriptEngineManager标识ScriptEngine。例如,基于 Mozilla Rhino Javascript 引擎的实现可能返回包含 {"javascript", "rhino"} 的列表。- 返回:
- 一组不可变的短名称
-
getLanguageName
String getLanguageName()返回此ScriptEngine支持的脚本语言的名称。- 返回:
- 支持语言的名称。
-
getLanguageVersion
String getLanguageVersion()返回此ScriptEngine支持的脚本语言的版本。- 返回:
- 支持语言的版本。
-
getParameter
返回其含义可能是特定于实现的属性的值。在所有实现中定义值的键包括:- ScriptEngine.ENGINE
- ScriptEngine.ENGINE_VERSION
- ScriptEngine.LANGUAGE
- ScriptEngine.LANGUAGE_VERSION
- ScriptEngine.NAME
这些键的值是分别由
getEngineName、getEngineVersion、getLanguageName、getLanguageVersion返回的字符串。对于 NAME,由getNames返回的字符串之一被返回。
还定义了一个保留键,THREADING,其值描述引擎相对于并发执行脚本和维护状态的行为。这些键THREADING的值为:null- 引擎实现不是线程安全的,不能用于在多个线程上并发执行脚本。"MULTITHREADED"- 引擎实现在内部是线程安全的,脚本可以并发执行,尽管一个线程上脚本执行的效果可能对其他线程上的脚本可见。"THREAD-ISOLATED"- 实现满足 "MULTITHREADED" 的要求,同时,引擎在执行在不同线程上执行的脚本时维护符号的独立值。"STATELESS"- 实现满足"THREAD-ISOLATED"的要求。此外,脚本执行不会更改ScriptEngine的引擎范围中的Bindings中的映射。特别是,在执行脚本之前和之后,Bindings中的键及其关联的值是相同的。
实现可以定义特定于实现的键。- 参数:
-
key- 参数的名称 - 返回:
-
给定参数的值。如果未为键分配值,则返回
null。 - 抛出:
-
NullPointerException- 如果键为 null。
-
getMethodCallSyntax
返回一个字符串,可用于使用支持的脚本语言的语法调用 Java 对象的方法。例如,Javascript 引擎的实现可能是;public String getMethodCallSyntax(String obj, String m, String... args) { String ret = obj; ret += "." + m + "("; for (int i = 0; i < args.length; i++) { ret += args[i]; if (i < args.length - 1) { ret += ","; } } ret += ")"; return ret; }- 参数:
-
obj- 表示要调用其方法的对象的名称。该名称是使用ScriptEngine的put方法、ENGINE_SCOPEBindings的put方法或ScriptContext的setAttribute方法创建绑定时使用的名称。脚本中使用的标识符可能是指定的名称的装饰形式。 -
m- 要调用的方法的名称。 -
args- 方法调用中参数的名称。 - 返回:
- 用于以脚本语言的语法调用方法的字符串。
- 抛出:
-
NullPointerException- 如果 obj 或 m 或 args 或 args 的任何元素为 null。
-
getOutputStatement
返回一个字符串,可用作语句以使用支持的脚本语言的语法显示指定的字符串。例如,Perl 引擎的实现可能是;public String getOutputStatement(String toDisplay) { return "print(" + toDisplay + ")"; }- 参数:
-
toDisplay- 要由返回的语句显示的字符串。 - 返回:
- 用于以脚本语言的语法显示字符串的字符串。
-
getProgram
返回具有给定语句的有效脚本语言可执行程序。例如,PHP 引擎的实现可能是;public String getProgram(String... statements) { String retval = "<?\n"; int len = statements.length; for (int i = 0; i < len; i++) { retval += statements[i] + ";\n"; } return retval += "?>"; }- 参数:
-
statements- 要执行的语句。可能是对getMethodCallSyntax和getOutputStatement方法的调用的返回值。 - 返回:
- 程序
- 抛出:
-
NullPointerException- 如果statements数组或其任何元素为 null
-
getScriptEngine
ScriptEngine getScriptEngine()返回与此ScriptEngineFactory关联的ScriptEngine的实例。通常会返回一个新的 ScriptEngine,但实现可能会池化、共享或重用引擎。- 返回:
-
一个新的
ScriptEngine实例。
-