【发布时间】:2013-11-03 08:09:20
【问题描述】:
我正在使用 BigDecimals,我要求除以 0 不应导致 ArithmeticException,而是返回 0(奇怪的商业数学)。
这是一个相当新的要求,我们已经有相当多的代码,在很多地方都使用了BigDecimals。我不想遍历所有这些地方并实施零检查。这也不会帮助我使用 3rd 方库,它可能在内部使用 BigDecimals 并会抛出 ArithmeticExceptioninstead。
我还想设置默认精度/比例并更改 compareTo 方法以忽略小的舍入误差。
由于所有这些全局更改会创建大量“样板”代码,因此我想出了更改 BigDecimal 的实现的想法。我之前已经为其他 3rd 方类自己修复了某些错误。
我通过在同一个包中创建一个同名的类来替换这些类,就像第 3 方类一样,因为外部 jar 文件将在我自己的类之后加载,所以我能够替换它们。
但创建java.math.BigDecimal 并没有帮助我,因为似乎“本机”Java 类甚至在我自己的类之前就已加载。
假设我真的希望我的应用程序中的每一个BigDecimal 都有点不同,我如何才能替换“官方”BigDecimal?我可以这样做吗?会不会有其他一些我现在没有想到的技术问题?
【问题讨论】:
标签: java overriding bigdecimal