转自:http://my.oschina.net/xiejuntao/blog/187011
示例代码摘自《编写高质量代码:改善Java程序的151个建议》
java代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public
static
void
main(String[] args) throws
Exception{
// 获得一个JavaScript 的执行引擎
ScriptEngine engine = new
ScriptEngineManager()
.getEngineByName( "javascript" );
// 建立上下文变量
Bindings bind = engine.createBindings();
bind.put( "factor" , 1 );
// 绑定上下文,作用域是当前引擎范围
engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
Scanner input = new
Scanner(System.in);
while
(input.hasNextInt()) {
int
first = input.nextInt();
int
sec = input.nextInt();
System.out.println( " 输入参数是:"
+ first + ","
+ sec);
// 执行js 代码
engine.eval( new
FileReader( "F:/sth/myeclipse/gone/src/xjt/gone/run.js" ));
// 是否可调用方法
if
(engine instanceof
Invocable) {
Invocable in = (Invocable) engine;
// 执行js 中的函数
Double result = (Double) in.invokeFunction( "formula" , first,
sec);
System.out.println( " 运算结果:"
+ result.intValue());
}
}
|
js代码
1
2
3
|
function
formula(var1,var2){
return
var1 + var2 - factor;
}
|
java自带jrunscript 命令工具,它可以在批处理中发挥最大效能,而且不需要通过JVM 解释脚本语言,可以直接通过该工具运行脚本。