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_SCOPE
Bindings
的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
实例。
-