public interface ScriptEngineFactory
ScriptEngineFactory
用来描述和实例化 ScriptEngine
。
实现 ScriptEngine
的每个类都有一个相应的工厂,该工厂公开描述引擎类的元数据。
ScriptEngineManager
使用 Jar 文件规范 中描述的服务提供者机制来获取所有当前 ClassLoader 中可用的 ScriptEngineFactory
实例。
方法摘要 | |
---|---|
String |
getEngineName() 返回 ScriptEngine 的完全名称。 |
String |
getEngineVersion() 返回 ScriptEngine 的版本。 |
List<String> |
getExtensions() 返回文件扩展名的不可变列表,这些扩展名通常标识使用此 ScriptEngine 支持的语言所编写的脚本。 |
String |
getLanguageName() 返回此 ScriptEngine 支持的脚本语言的名称。 |
String |
getLanguageVersion() 返回此 ScriptEngine 支持的脚本语言的版本。 |
String |
getMethodCallSyntax(String obj, String m, String... args) 返回一个 String,该 String 可用来调用使用受支持脚本语言语法的 Java 对象的方法。 |
List<String> |
getMimeTypes() 返回 mimetypes 的不可变列表,这些 mimetypes 与可由引擎执行的脚本关联。 |
List<String> |
getNames() 返回 ScriptEngine 短名称的不可变列表,这些名称由 ScriptEngineManager 用来标识 ScriptEngine 。 |
String |
getOutputStatement(String toDisplay) 返回一个 String,该 String 可用作一个语句来显示使用受支持脚本语言语法的指定 String。 |
Object |
getParameter(String key) 返回属性值,该属性的含义可能是特定于实现的。 |
String |
getProgram(String... statements) 返回一个包含给定语句的有效脚本语言的可执行程序。 |
ScriptEngine |
getScriptEngine() 返回与此 ScriptEngineFactory 关联的 ScriptEngine 的实例。 |
方法详细信息 |
---|
String getEngineName()
ScriptEngine
的完全名称。例如,基于 Mozilla Rhino Javascript 引擎的实现可以返回
Rhino Mozilla Javascript Engine。
String getEngineVersion()
ScriptEngine
的版本。
ScriptEngine
实现版本。
List<String> getExtensions()
ScriptEngine
支持的语言所编写的脚本。该数组由
ScriptEngineManager
使用,用于实现其
getEngineByExtension
方法。
List<String> getMimeTypes()
ScriptEngineManager
类使用,用于实现其
getEngineByMimetype
方法。
List<String> getNames()
ScriptEngine
短名称的不可变列表,这些名称由
ScriptEngineManager
用来标识
ScriptEngine
。例如,基于 Mozilla Rhino Javascript 引擎的实现可以返回包含 {"javascript", "rhino"} 的列表。
String getLanguageName()
ScriptEngine
支持的脚本语言的名称。
String getLanguageVersion()
ScriptEngine
支持的脚本语言的版本。
Object getParameter(String key)
用于这些键的值分别是 getEngineName
、getEngineVersion
、getName
、getLanguageName
和 getLanguageVersion
返回的 String。
还定义了保留键 THREADING
,它的值描述了与脚本并发执行和状态维护有关的引擎行为。用于 THREADING
键的值有:
null
- 引擎实现不是线程安全的,并且无法用来在多个线程上并发执行脚本。
"MULTITHREADED"
- 引擎实现是内部线程安全的,并且脚本可以并发执行,尽管在某个线程上执行脚本的效果对于另一个线程上的脚本是可见的。
"THREAD-ISOLATED"
- 该实现满足 "MULTITHREADED" 的要求,并且引擎为不同线程上执行的脚本中的符号维护独立的值。
"STATELESS"
- 该实现满足 "THREAD-ISOLATED"
的要求。此外,脚本执行不改变 Bindings
中的映射关系,该 Bindings 是 ScriptEngine
的引擎范围。具体来说,Bindings
及其关联值中的键在执行脚本之前和之后是相同的。
key
- 参数名
null
。
String getMethodCallSyntax(String obj, String m, String... args)
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 += ")";
} else {
ret += ",";
}
}
return ret;
}
obj
- 表示其方法将被调用的对象的名称。该名称是用来使用
ScriptEngine
的
put
方法、
ENGINE_SCOPE
Bindings
的
put
方法或者
ScriptContext
的
setAttribute
方法创建 bindings 的名称。脚本中使用的标识符可以是指定标识符的装饰形式。
m
- 要调用的方法的名称。
args
- 方法调用中的参数名称。
String getOutputStatement(String toDisplay)
public String getOutputStatement(String toDisplay) {
return "print(" + toDisplay + ")";
}
toDisplay
- 将由返回的语句显示的 String。
String getProgram(String... statements)
public String getProgram(String... statements) {
$retval = "<?\n";
int len = statements.length;
for (int i = 0; i < len; i++) {
$retval += statements[i] + ";\n";
}
$retval += "?>";
}
statements
- 要执行的语句。可能是调用
getMethodCallSyntax
和
getOutputStatement
方法的返回值。
ScriptEngine getScriptEngine()
ScriptEngineFactory
关联的
ScriptEngine
的实例。通常返回一个新的 ScriptEngine,但这些实现可以池化、共享或重用引擎。
ScriptEngine
实例。