zoukankan      html  css  js  c++  java
  • 高质量编码--易变业务使用脚本语言编写

    本文是阅读了《编写高质量代码 改善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;再次输入两个数进行计算,得出的就是两数之差了,是不是很神奇~

    这本书是我的师傅推荐给我的,也推荐大家看看,对日后的编码还是挺有帮助的。一起学习,一起进步

  • 相关阅读:
    Elasticsearch(ES) 创建索引
    Elasticsearch(ES) 下载&安装
    一文带您了解 Elasticsearch 中,如何进行索引管理(图文教程)
    Spring Boot 2.0 快速集成整合消息中间件 Kafka
    一文教您如何通过 Docker 搭建反向代理 Ngnix,并配置 Https SSL 证书
    Django开发文档-域用户集成登录
    Python实现按键精灵(二)-找图找色
    Python学习笔记-SQLSERVER的大批量导入以及日常操作(比executemany快3倍)
    Python爬虫案例-获取最新的中国行政区域划分
    PostgreSQL自动更新序列sequence
  • 原文地址:https://www.cnblogs.com/lwhblog/p/12588181.html
Copyright © 2011-2022 走看看