java – BigDecimal符号eclipse插件或漂亮的外部工具
我需要使用BigDecimal进行大量的操作,我发现不得不表达
Double a = b - c * d; //natural way 如 BigDecimal a = b.subtract(c.multiply(d))//BigDecimal way 不仅丑陋,而且是我和业务分析师之间的错误和沟通问题的根源.他们完全可以用双打来读取代码,但现在他们不能. 当然,一个完美的解决方案将是java对操作符重载的支持,但由于不会发生这种情况,我正在寻找一个eclipse插件,甚至是一个外部工具,可以实现从“自然的方式”到“bigdecimal”的自动转换. 我不是试图预处理源代码或动态翻译或任何复杂的东西,我只是想要一些我可以输入文本和获取文本,并保持“自然的方式”作为一个注释在源代码. P.S .:我找到了this incredible smart hack,但是我不想开始进行字节码操作.也许我可以使用它来创建一个Natural2BigDecimal翻译器,但如果有人已经做了这样一个工具,我不想重新发明. 我不想切换到Scala / Groovy / JavaScript,我也不能,公司规则禁止任何东西,但服务器端代码中的java. 解决方法
“我不是想要处理源代码…我只是想要一些我可以输入[bigDecimal算术表达式]文本”.
解决问题的一半是认识到它的问题.您完全需要预处理您的BigDecimal表达式来产生合法的Java. 你只有两个基本的选择: >独立的“域特定语言”和DSL编译器,接受“标准”表达式,并将它们直接转换为Java代码. (这是一种预处理器).这会让您遇到保留所有表达式片段的问题,并以某种方式知道将其放在Java代码中的位置. (也许(从另一个答案中偷走): // BigDecimal a = b - c * d; BigDecimal a = b.subtract( c.multiply( d ) ); 具有意义“将注释中的大十进制表达式编译为其Java等效项,并将该语句替换为该翻译. 要实现第二个想法,您需要一个program transformation system,它可以应用源到源重写规则来转换(生成转换的特殊情况)代码.这只是一个预处理器,可以根据您的需要进行自定义. 我们DMS Software Reengineering Toolkit与Java Front End 可以做到这一点.你需要一个完整的Java解析器来做这个转换部分;您将需要名称和类型解析,以便您可以解析/检查提出的表达式以确定. 虽然我同意现有的Java符号是丑陋的,你的建议会让它更漂亮,但我个人的看法是不值得的.你最终依赖于一个复杂的工具(是的,DMS是复杂的:操纵代码并不容易),这是一个相当微不足道的收益. 如果您和您的团队撰写了数千种这些公式,或者这些公式的作者是Java天真的,这可能是有道理的.在这种情况下,我会进一步,只是坚持你写你需要的标准表达格式.您可以自定义Java前端以检测操作数类型为十进制类型,并为您重写.然后,您只需在每个Java编译步骤之前运行此预处理程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |