java - Java将方法添加到类
问题描述
早上好,我有一个扩展类 BigDecimal 的自定义类 cBigDecimal。我的目标是同时使用 BigDecimal 和 cBigDecimal 类中的方法(例如“add”或“multiply”,以及自定义函数“percentage”)。问题是“添加”&co。返回 BigDecimal,显然我不能将它转换为 cBigDecimal ...有什么想法吗?在此先感谢,洛伦佐
解决方案
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 BigDecimal
s 。
推荐阅读
- performance - 从 CSV 中删除重复项——性能问题
- json - 服务人员我想将 fetch 响应传递给另一个 fetch
- ruby - 使用 .include 忽略字符串中的大小写?
- amazon-web-services - 使用带有 boto python API 的 lambda 读取 AWS ec2 实例的详细信息导致“EC2”对象没有属性“Instance”
- reactjs - 尝试从符号链接导入时 React 崩溃
- html - 在移动设备上垂直居中元素
- python - 语法错误,我不知道为什么 Python
- java - @Value 在单元测试中返回 null
- sharepoint - 如何为并发项目创建图表
- typescript - 如何在 WebStorm 中抑制 TS2322 警告?