首页 > 解决方案 > Java将方法添加到类

问题描述

早上好,我有一个扩展类 BigDecimal 的自定义类 cBigDecimal。我的目标是同时使用 BigDecimal 和 cBigDecimal 类中的方法(例如“add”或“multiply”,以及自定义函数“percentage”)。问题是“添加”&co。返回 BigDecimal,显然我不能将它转换为 cBigDecimal ...有什么想法吗?在此先感谢,洛伦佐

标签: javaandroidbigdecimal

解决方案


cBigDecimal你的班级究竟做了什么而没有做BigDecimal什么?

这是一个BigDecimal完全可以扩展的设计疏忽。Josh Bloch 在Effective Java 3rd Ed Item 17 中说:“最小化可变性”:

BigInteger不可变类在编写时必须是有效的 final并没有被广泛理解BigDecimal,因此它们的所有方法都可能被覆盖。不幸的是,在保持向后兼容性的同时,这在事后无法纠正。

如果您只想“添加一个方法”到BigDecimal,您可以简单地创建一个辅助方法:

static BigDecimal percent(BigDecimal b) {
  return b.divide(100);  // Or whatever it does.
}

然后,您可以在任何地方处理普通的 old BigDecimals 。


推荐阅读