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