使用脚本实现设计和性能的平衡
2010-09-14 13:32:58 来源:WEB开发网Hello World1
接口
Hello World2
上述所有示例都小巧且简单,但是 Invocable 接口的真正威力在于它可用于通过脚本实现 Java 接口(当然,使用支持此特性的语言中)。我将回过头来讨论这个特性为何如此重要以及它可以为 Java 项目带来哪些好处。但是,首先我将使用一个简单的程序演示该特性。
我们先定义一个简单的接口:
package net.scriptinginjava.invocable;
public interface Hello {
public void sayHello(String name);
public void time();
}
现在,还记得第一个 JavaScript 示例如何使用 Scripting API 调用函数吗?它定义了一个 sayHello 函数,该函数只有且个参数。我们来看看如何使用这个简单的脚本实现上面的定义的接口。
package net.scriptinginjava.invocable;
import java.io.FileReader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class InterfaceTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("js");
if (engine instanceof Invocable) {
engine
.eval(new FileReader(
"src/net/scriptinginjava/invocable/function.js"));
Hello hello = ((Invocable)engine).getInterface(Hello.class);
hello.sayHello("World");
//hello.time();
}
}
}
执行这个应用程序,可以发现它将打印输出“Hello World”文本,这意味着我们使用三行脚本代码成功地实现了一个接口。
更多精彩
赞助商链接