高质量编码--易变业务使用脚本语言编写
Posted lwhblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高质量编码--易变业务使用脚本语言编写相关的知识,希望对你有一定的参考价值。
本文是阅读了《编写高质量代码 改善Java程序的151个建议》后学习理解后进行的产出,同样是为了方便我后面的回顾。
废话不多说,开始。
脚本语言是在运行期解释执行的,这种特性正是Java所缺少的,java是一种编译解释的语言,在进行修改后,就需要重新编译,才能实现修改的内容。
脚本语言的优点:灵活,便捷,简单。通过引入脚本语言可以使Java更加强大。
先上代码
import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
public class CountByJS {
public static void main(String[] args) throws FileNotFoundException, ScriptException, NoSuchMethodException {
// 获取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.hasNext()){
int a = input.nextInt();
int b = input.nextInt();
System.out.printf("输入的参数:%s,%s
",a,b);
// 执行js代码
engine.eval(new FileReader("d:\count.js"));
// 是否可调用方法
if (engine instanceof Invocable){
Invocable in = (Invocable) engine;
// 执行js中的函数
Double result = (Double) in.invokeFunction("count", a, b);
System.out.printf("运算结果:%s
",result.intValue());
}
}
}
}
JS代码如下所示
function count(a,b){
return a + b;
}
此时我们可以调用JS的函数计算两数之和,而我们此时将JS函数的内容修改为return a - b;
再次输入两个数进行计算,得出的就是两数之差了,是不是很神奇~
这本书是我的师傅推荐给我的,也推荐大家看看,对日后的编码还是挺有帮助的。一起学习,一起进步
以上是关于高质量编码--易变业务使用脚本语言编写的主要内容,如果未能解决你的问题,请参考以下文章
转载--编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)
编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)
编写高质量代码改善C#程序的157个建议——建议67:慎用自定义异常