震惊,竟然能通过表达式计算VO,再也不用手打Getter计算方法了,程序员福利

2023-11-07

我有一个问题:

假设我们从给前端返回一个VO,但是VO中的某些属性需要通过计算得来的。如果我们每次都要在实体类中直接计算的话,不利于代码维护性,每次改变计算方法都要重新修改方法,十分麻烦。所以我就想能不能通过一个数学表达式来计算实体类中的属性,这样的话我每次更改计算方法的话,我只需要修改表达式就可以了。说干就干,今天它来了

细微琢磨一下:

引入pom

  <!--   表达式计算     -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy</artifactId>
        </dependency>
  public static void main(String args[]) {
   

        Binding binding = new Binding();

        binding.setVariable("F",2.5);
        binding.setVariable("T",30);
        binding.setVariable("A",100);
        binding.setVariable("P0",100);

        binding.setVariable("language", "Groovy");

        GroovyShell shell = new GroovyShell(binding);

        Object F1 =shell.evaluate("P1=(F+T); return P1 ");

        Object F2 =shell.evaluate("P1=P0*(0.055*0.20+1.0011)+A; return P1 ");

        System.out.println(F1);
        System.out.println(F2);

    }

在这里插入图片描述

注意看俺要深入的拓展

产生了一个新的问题,我不可能我手动输入这些实体类中的Key吧,这也太累了吧,然后我就想到了可以通过反射方法,取到实体类中的Key还有value,然后给塞到Binding 类中。然后说干就干封装工具类。

import groovy.lang.Binding;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

震惊,竟然能通过表达式计算VO,再也不用手打Getter计算方法了,程序员福利 的相关文章

随机推荐

  • SBC 功能与部署

    SBC是IMS网络边缘用于实现IP接入 互通和安全保护的网元 存在于接入网络与IMS网络之间或不同IMS网络之间 是用户接入IMS的入口点 SBC作为B2BUA将用户和IMS核心网进行隔离 SBC的主要功能包括 注册管理功能 NAT穿越功能
  • 软件测试实验

    文章目录 软件测试实验 实验一 单元测试JUnit4基础 基础知识 实验内容 实验二 单元测试JUnit4进阶 实验三 Selenium功能测试 了解Selenium自动化测试工具 实验内容 实验四 Selenium WebDrive功能测
  • 局域网搜索-秒搜神器:everything 如果打造etp服务器,并且在本地可以双击打开

    起因 最近要经常到公司2000G的硬盘寻找数据 利用Windows自带的局域网共享搜索 速度非常缓慢 方案 就想到利用秒搜工具everything来做局域网工具 网页模式的很简单就不说了 这里说的是映射到本地硬盘的模式 步骤 主要是在服务器
  • Laravel_migrate 之后报Field 'is_active' doesn't have a default value

    例如 首先保证mysql的版本大于5 7 因为json是5 7之后支持的 找到database php 把strict设置为false
  • Uncaught SyntaxError: Unexpected identifier错误的解决方法

    在js中出现下面的错误 Uncaught SyntaxError Unexpected identifier可能的原因是 1 有可能是字符串类型的 但是并没有加双引号 2 有的是没有加逗号 仔细检查便好 3 如果是jsp的话仔细检查下js中
  • C#知识系列:程序不包含适合于入口点的静态“Main”方法

    参考 不包含适合于入口点的静态 Main 方法
  • 趣谈操作系统原理,存储管理之页式、段式、段页式存储

    一 概述 非连续分配管理方式允许一个程序分散地装入到不相邻的内存分区 根据分区的大小是否固定分为分页式存储管理方式和分段式存储管理方式 分页存储管理方式中 又根据运行作业时是否要把作业的所有页面都装入内存才能运行分为基本分页式存储管理方式和
  • centos 7 安装mariadb(转)

    一 检测本机是否已安装mariadb 或者MySQL rpm qa grep mariadb rpm qa grep mysql 下面是我的结果 因为我已经安装过了 二 如果检测到有类似的安装包 建议先全部删除 重新安装 否则会有一些配置被
  • CodeForces - 6B

    题目链接 import java util Scanner public class Main public static void main String args Scanner sc new Scanner System in int
  • 计算机网络复习资料

    选择与填空 概述 从通信双方信息交互的方式来看 通信有三种基本的方式 分别是单向通信 双向交替通信 和 双向同时通信 如果收发两端之间的传输距离为 10km 信号在媒体上的传输速率为 2 105km s 数据长度为 1000B 数据发送速率
  • @Param注解的用法

    1 概述 首先明确这个注解是为SQL语句中参数赋值而服务的 Param的作用就是给参数命名 比如在mapper里面某方法A int id 当添加注解后A Param userId int id 也就是说外部想要取出传入的id值 只需要取它的
  • 【思科、华为、华三这三大认证,选哪个考最好?】

    说起考证 大多数网络工程师心里都要抖上一抖 对于没考证的网工来说 一听就头痛 怎么谁都有了 就自己没有 对于考了证的网工来说 一听也头痛 怎么这刚考了一个 其他同事考了三个 今天我主要想和你聊的是 思科 华为 华三这三大认证的前景分析 以及
  • 下面一段代码竟然引起反复打开的时候IE进程挂起

    var lchs close window onunload function if lchs fresh if window screenLeft gt 10000 logout else logout window onbeforeun
  • vscode中如何让结果显示在弹出cmd框中

    1 首先修改配置文件launch json终端的 externalConsole true 这个必须为true 注意 后面不能带逗号 2 执行的时候按F6 按F5的时候还是一样显示在旁边的终端窗口中 但是 按F6就会显示在弹出的cmd窗口中
  • 什么叫工作?

    当时公司招了大批应届本科和研究生毕业的新新人类 平均年龄25岁 那个新的助理 是经过多次面试后 我亲自招回来的一个女孩 名牌大学本科毕业 聪明 性格活泼 私下里我得承认 我招她的一个很重要的原因 除了她在大学里优秀的表现之外 还因为她写了一
  • 文件操作命令

    文章目录 touch 命令 命令格式 常用用法 stat命令 命令格式 常用用法 cat命令 命令格式 常用用法 more命令 命令格式 常用用法 less命令 命令格式 常用用法 head命令 命令格式 常用用法 tail命令 命令格式
  • Python中重写(override)

    Python中重写 override Python中 有重写 override 的概念 但是没有严格意义上的重载 overload 类继承时 子类可以重新定义父类中已有的方法 称为重写 Override 在Python中 没有像其他语言 如
  • 前端高频面试题 Day03

    1 Vue computed 和 watch 区别 对于Computed 它支持缓存 只有依赖的数据发生了变化 才会重新计算 不支持异步 当Computed中有异步操作时 无法监听数据的变化 computed的值会默认走缓存 计算属性是基于
  • (CUDA)快速GPU开发------Device函数应用

    Device函数表示的是仅仅在设备 Device 端能够使用的函数 Device函数可以是任何的函数 这样可以通过每一个线程来运行一个Device函数来达到并行的目的 在本文中聚焦软件开发速度 故而不讨论计算性能问题 目录 适用项目 开发方
  • 震惊,竟然能通过表达式计算VO,再也不用手打Getter计算方法了,程序员福利

    我有一个问题 假设我们从给前端返回一个VO 但是VO中的某些属性需要通过计算得来的 如果我们每次都要在实体类中直接计算的话 不利于代码维护性 每次改变计算方法都要重新修改方法 十分麻烦 所以我就想能不能通过一个数学表达式来计算实体类中的属性