public interface ScriptEngineFactory
ScriptEngineFactory用于描述和实例化ScriptEngines。每个实现
ScriptEngine 的类都有一个相应的工厂,该工厂公开描述引擎类的元数据。ScriptEngineManager 使用 ServiceLoader 类中描述的服务提供商加载器机制来获取 ScriptEngineFactory 实例的实例。请参阅 ScriptEngineManager() 和 ScriptEngineManager(java.lang.ClassLoader) 。
- 自从:
- 1.6
-
方法总结
修饰符和类型方法描述返回ScriptEngine的全名。返回ScriptEngine的版本。返回一个不可变的文件扩展名列表,它通常标识以此ScriptEngine支持的语言编写的脚本。返回此ScriptEngine支持的脚本语言的名称。返回此ScriptEngine支持的脚本语言版本。getMethodCallSyntax(String obj, String m, String... args) 返回一个字符串,该字符串可用于使用支持的脚本语言的语法调用 Java 对象的方法。返回一个不可变的 mimetypes 列表,与可以由引擎执行的脚本相关联。getNames()返回ScriptEngine的不可变短名称列表,可用于通过ScriptEngineManager识别ScriptEngine。getOutputStatement(String toDisplay) 返回一个字符串,该字符串可用作语句以使用支持的脚本语言的语法显示指定的字符串。getParameter(String key) 返回其含义可能特定于实现的属性的值。getProgram(String... statements) 返回具有给定语句的有效脚本语言可执行程序。返回与此ScriptEngineFactory关联的ScriptEngine的实例。
-
方法详情
-
getEngineName
String getEngineName()返回ScriptEngine的全名。例如,基于 Mozilla Rhino Javascript 引擎的实现可能会返回Rhino Mozilla Javascript 引擎.- 返回:
- 引擎实现的名称。
-
getEngineVersion
String getEngineVersion()返回ScriptEngine的版本。- 返回:
ScriptEngine实现版本。
-
getExtensions
返回一个不可变的文件扩展名列表,它通常标识以此ScriptEngine支持的语言编写的脚本。ScriptEngineManager使用该数组来实现其getEngineByExtension方法。- 返回:
- 扩展列表。
-
getMimeTypes
返回一个不可变的 mimetypes 列表,与可以由引擎执行的脚本相关联。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"的要求。此外,脚本执行不会改变Bindings中的映射,这是ScriptEngine的引擎范围。特别是,Bindings中的键及其关联值在脚本执行前后是相同的。
实现可以定义特定于实现的键。- 参数:
key- 参数名称- 返回:
-
给定参数的值。如果没有为键分配值,则返回
null。 - 抛出:
NullPointerException- 如果键为空。
-
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 的任何元素为空。
-
getOutputStatement
返回一个字符串,该字符串可用作语句以使用支持的脚本语言的语法显示指定的字符串。例如,Perl 引擎的实现可能是;public String getOutputStatement(String toDisplay) { return "print(" + toDisplay + ")"; }- 参数:
toDisplay- 返回语句要显示的字符串。- 返回:
- 用于在脚本语言的语法中显示 String 的字符串。
-
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数组或其任何元素为空
-
getScriptEngine
ScriptEngine getScriptEngine()返回与此ScriptEngineFactory关联的ScriptEngine的实例。通常会返回一个新的 ScriptEngine,但实现可能会池化、共享或重用引擎。- 返回:
-
一个新的
ScriptEngine实例。
-