接口 ScriptEngineFactory


public interface ScriptEngineFactory
ScriptEngineFactory用于描述和实例化ScriptEngines

每个实现 ScriptEngine 的类都有一个相应的工厂,该工厂公开描述引擎类的元数据。

ScriptEngineManager 使用 ServiceLoader 类中描述的服务提供商加载器机制来获取 ScriptEngineFactory 实例的实例。请参阅 ScriptEngineManager() ScriptEngineManager(java.lang.ClassLoader)
自从:
1.6
  • 方法详情

    • getEngineName

      String  getEngineName()
      返回 ScriptEngine 的全名。例如,基于 Mozilla Rhino Javascript 引擎的实现可能会返回Rhino Mozilla Javascript 引擎.
      返回:
      引擎实现的名称。
    • getEngineVersion

      String  getEngineVersion()
      返回 ScriptEngine 的版本。
      返回:
      ScriptEngine 实现版本。
    • getExtensions

      List <String > getExtensions()
      返回一个不可变的文件扩展名列表,它通常标识以此 ScriptEngine 支持的语言编写的脚本。 ScriptEngineManager 使用该数组来实现其 getEngineByExtension 方法。
      返回:
      扩展列表。
    • getMimeTypes

      List <String > getMimeTypes()
      返回一个不可变的 mimetypes 列表,与可以由引擎执行的脚本相关联。 ScriptEngineManager 类使用该列表来实现其 getEngineByMimetype 方法。
      返回:
      MIME 类型列表。
    • getNames

      List <String > getNames()
      返回 ScriptEngine 的不可变短名称列表,可用于通过 ScriptEngineManager 识别 ScriptEngine。例如,基于 Mozilla Rhino Javascript 引擎的实现可能会返回包含 {"javascript", "rhino"} 的列表。
      返回:
      一个不可变的短名称列表
    • getLanguageName

      String  getLanguageName()
      返回此 ScriptEngine 支持的脚本语言的名称。
      返回:
      支持的语言的名称。
    • getLanguageVersion

      String  getLanguageVersion()
      返回此 ScriptEngine 支持的脚本语言版本。
      返回:
      支持的语言版本。
    • getParameter

      Object  getParameter(String  key)
      返回其含义可能特定于实现的属性的值。在所有实现中为其定义值的键是:
      • ScriptEngine.ENGINE
      • ScriptEngine.ENGINE_VERSION
      • ScriptEngine.LANGUAGE
      • ScriptEngine.LANGUAGE_VERSION
      • ScriptEngine.NAME

      这些键的值分别是前四个键的 getEngineNamegetEngineVersiongetLanguageNamegetLanguageVersion 返回的字符串。对于 NAME,返回 getNames 返回的字符串之一。

      还定义了保留键 THREADING ,其值描述了引擎在脚本并发执行和状态维护方面的行为。 THREADING 键的这些值是:

      • null - 引擎实现不是线程安全的,不能用于在多个线程上并发执行脚本。
      • "MULTITHREADED" - 引擎实现在内部是线程安全的,脚本可以并发执行,尽管脚本在一个线程上执行的效果可能对其他线程上的脚本可见。
      • "THREAD-ISOLATED" - 该实现满足“MULTITHREADED”的要求,而且,引擎在不同线程上执行的脚本中为符号保持独立的值。
      • "STATELESS" - 实现满足 "THREAD-ISOLATED" 的要求。此外,脚本执行不会改变 Bindings 中的映射,这是 ScriptEngine 的引擎范围。特别是,Bindings 中的键及其关联值在脚本执行前后是相同的。


      实现可以定义特定于实现的键。
      参数:
      key - 参数名称
      返回:
      给定参数的值。如果没有为键分配值,则返回 null
      抛出:
      NullPointerException - 如果键为空。
    • getMethodCallSyntax

      String  getMethodCallSyntax(String  obj, String  m, String ... args)
      返回一个字符串,该字符串可用于使用支持的脚本语言的语法调用 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 - 表示要调用其方法的对象的名称。该名称用于使用ScriptEngineput 方法、ENGINE_SCOPE Bindingsput 方法或ScriptContextsetAttribute 方法创建绑定。脚本中使用的标识符可以是指定标识符的装饰形式。
      m - 要调用的方法的名称。
      args - 方法调用中参数的名称。
      返回:
      用于调用脚本语言语法中的方法的字符串。
      抛出:
      NullPointerException - 如果 obj 或 m 或 args 或 args 的任何元素为空。
    • getOutputStatement

      String  getOutputStatement(String  toDisplay)
      返回一个字符串,该字符串可用作语句以使用支持的脚本语言的语法显示指定的字符串。例如,Perl 引擎的实现可能是;
      
       public String getOutputStatement(String toDisplay) {
         return "print(" + toDisplay + ")";
       }
        
      参数:
      toDisplay - 返回语句要显示的字符串。
      返回:
      用于在脚本语言的语法中显示 String 的字符串。
    • getProgram

      String  getProgram(String ... statements)
      返回具有给定语句的有效脚本语言可执行程序。例如,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 - 要执行的语句。可能是调用 getMethodCallSyntaxgetOutputStatement 方法的返回值。
      返回:
      该程序
      抛出:
      NullPointerException - 如果 statements 数组或其任何元素为空
    • getScriptEngine

      ScriptEngine  getScriptEngine()
      返回与此 ScriptEngineFactory 关联的 ScriptEngine 的实例。通常会返回一个新的 ScriptEngine,但实现可能会池化、共享或重用引擎。
      返回:
      一个新的 ScriptEngine 实例。